-m32 オプションを使用して msys2 mingw64 でコンパイルする

-m32 オプションを使用して msys2 mingw64 でコンパイルする

msys2 mingw64 シェル内で、32 ビット モードで実行するために、-m32 オプションを使用してソフトウェアをコンパイルしたいと思います。

mingw-w64-x86_64-toolchainをインストールしました

しかし、-m32 でコンパイルすると、次のエラーが発生します。

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/lib/libmingw32.a when searching for -lmingw32
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/lib\libmingw32.a when searching for -lmingw32
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/lib/libmingw32.a when searching for -lmingw32
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingw32

ライブラリのインストールの問題だと考えていますが、見つけ方がわかりません。

答え1

c:\msys2 の mingw32.exe シェルも使用しました。この下に pacman -S mingw-w64-i686-toolchain をインストールしました。

mingw64 bash シェルから gcc -m32 を使用すると、i386 objs がビルドされるようですが (objdump で確認)、ご覧のとおり、リンクは成功しません。

答え2

-m32に存在する gcc を使用する場合は、 オプションを使用できますc:\mysys2\mingw32\bin

現在フォルダが空の場合は、次の場所に移動します。

  1. msysコンソール。

  2. pacman -S mingw-w64-i686-toolchainこのコマンドを使用します。

参照するサブシステム詳細については、このドキュメントのセクションを参照してください。

関連情報