私は現在、私が書いた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)しかない場合は、これをリンクディレクティブに追加します。