0

我目前正在尝试交叉编译我编写的在 Linux 上运行良好的 c++ 代码。

我安装了mingw32,并使用类似的东西将libgmp编译为Windows库(.a):

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

希望我做对了

我在我的项目 incs 和 libs 中添加了两个目录。在 incs 中我放了 .h 标头( gmpxx.h ),在 libs 中我放了 libgmpxx.a 和 libgmp.a

我尝试使用这个 makefile 进行编译:

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 回答