0

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

私はmingw32をインストールし、次のようなものを使用してlibgmpをWindowsライブラリ( .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 が見つからないというメッセージが表示されます....

誰にも解決策がありますか?これは頑張った...

4

1 に答える 1

0

コンパイル ディレクティブは、そうではないヘッダー ディレクトリ 'incs' を指す必要があります。

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

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

CCFLAGS=-Iincs/

コンパイル ディレクティブを変更します。

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

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

LDFLAGS=-Llibs/ -l... 

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

于 2013-04-30T16:13:50.480 に答える