/ mingw32とgmpを使用した/クロスコンパイル - c ++、クロスコンパイル、gmp、mingw32

mingw32とgmpを使ったクロスコンパイル - c ++、クロスコンパイル、gmp、mingw32

私は現在、私が書いたc ++コードをクロスコンパイルしようとしていますが、これはLinux上では完全にうまくいきました。

私はmingw32をインストールして、以下のようなものを使用してlibgmpをウィンドウズライブラリ(.a)としてコンパイルしました。

./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc

うまくやれば

プロジェクトのincsとlibsに2つのディレクトリを追加しました。 incsには.hヘッダー(gmpxx.h)を、libsにはlibgmpxx.aとlibgmp.aを入れました。

私はこのメイクファイルを使ってコンパイルしようとしました:

CPP=i586-mingw32msvc-g++
CPPSPECS=
LDFLAGS=-I incs/ libs/
EXEC=ceyd++.exe


all: $(EXEC)

$(EXEC): base64.o polynome.o chiffre.o dechiffre.o ceyd.o
$(CPP) -o $@ $^ $(LDFLAGS)

%.o: %.cpp
$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS)

clean:
rm -rf *.o

mrproper: clean
rm -rf $(EXEC)

ここでは役に立ちませんので警告部分は削除しました。

makeを実行すると、gmpxx.hが見つからないことがわかります。

誰かが解決策を持っていますか?これに懸命に挑戦しました...

回答:

回答№1は0

コンパイルディレクティブは、ヘッダーディレクトリ "incs"を指している必要があります。

$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS)

次のようにして変数を作成します。

CCFLAGS=-Iincs/

そしてコンパイル指令を修正します。

$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS) $(CCFLAGS)

さらに、LDFLAGS変数は次のようになります。

LDFLAGS=-Llibs/ -l...

...はlibs /でリンクしている共有ライブラリの名前を示します。スタティックライブラリ(.a)しかない場合は、これをリンクディレクティブに追加します。