MinGW」タグアーカイブ

Failed to emerge cross-i686-mingw32/gcc-4.8.3

/var/tmp/portage/cross-i686-mingw32/gcc-4.8.3/work/gcc-4.8.3/libsanitizer/interception/interception_win.cc: In function ‘void __interception::WriteJumpInstruction(char*, char*)’:
   /var/tmp/portage/cross-i686-mingw32/gcc-4.8.3/work/gcc-4.8.3/libsanitizer/interception/interception_win.cc:52:3: error: ‘ptrdiff_t’ was not declared in this scope

cross-i686-mingw32/gcc-4.8.3のビルドエラーです。

USE=-sanitize

でとりあえずビルドが通るようです。

リンク

Gentoo Forums :: View topic – [solved] cross-mingw32/gcc-4.8.3 fails to rebuild
http://forums.gentoo.org/viewtopic-p-7636368.html

libgcc_s_dw2-1.dllがない

MinGWでビルドしたプログラムを実行して、

コンピューターに libgcc_s_dw2-1.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。

と表示される場合。

MinGWと一緒にインストールされたDLLを持ってきてもいいですが、スタティックリンクすることもできます。

$ c++ sample.c -mwindows -static-libgcc

Gentoo LinuxでMingw

Gentoo LinuxでMingwを使ったクロスコンパイル

crossdevをインストール

# emerge -v sys-devel/crossdev

/etc/make.confにPORTDIR_OVERLAYを追加

PORTDIR_OVERLAY="/usr/local/portage"

/usr/local/portageがない場合はディレクトリを作成

# mkdir /usr/local/portage

i686-mingw32の環境を構築

# crossdev --stable --target i686-mingw32

動作確認

$ i686-mingw32-gcc -mwindows -o mingw-sample.exe mingw-sample.c
$ i686-mingw32-strip mingw-sample.exe
$ wine mingw-sample.exe

wineをインストールしていない場合はWindows環境に持って行って実行してみてください。

stripはなくてもかまいませんが、デバックに使われるデータを削除して、ファイルサイズを小さくしたい場合に使います。

サンプルコード

このページのサンプルコードは以下のサイトからダウンロードできます。
MinGW – テストコード