繁体   English   中英

Makefile上的GCC和Crypto ++

[英]GCC and Crypto++ on makefile

我正在尝试使用gcc-make命令编译C ++项目,但是程序给出了此错误。 我已经编译了Crypto ++,并添加了include和lib文件夹,但我不知道如何将此目录添加到gcc。

解决该“ -lcrytopp”错误该怎么办?

我正在使用makefile,这是33-34行。

$(TARGET): build $(OBJECTS)
    $(CC) $(OBJECTS) -o $(TARGET) -lcryptopp

错误

D:\Osman\CnC RA2\Mix\ccmix-crypto\ccmix-crypto>make
g++ src/mix_db_gamedb.o src/mix_db_gmd.o src/mix_header.o src/mix_db_lmd.o
src/mixid.o src/ccmix.o src/mix_file.o -o build/ccmix -lcryptopp
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32
/bin/ld.exe: cannot find -lcryptopp
collect2.exe: error: ld returned 1 exit status
Makefile:34: recipe for target 'build/ccmix' failed
make: *** [build/ccmix] Error 1

加密++目录:

在此处输入图片说明

编译错误:

在此处输入图片说明

您尚未将包含库的目录添加到链接行。 它应该类似于-Lxxx ,其中xxx是包含cryptopp库的目录的路径:

$(TARGET): build $(OBJECTS)
        $(CC) $(OBJECTS) -o $(TARGET) -Lxxx -lcryptopp

(用包含cryptopp库的目录替换xxx

解决该“ -lcrytopp”错误该怎么办?

从Unix兼容版本上的Crypto ++构建目录工作时,该项目不使用includelib (如您的图片所示)。 一切都放置在根目录中(如您的图片所示)。

如果执行make install ,则会设置目录,但似乎没有安装。 我还要说,由于该项目已被放弃,因此通常不再对MinGW进行测试,因此我不确定make install实际安装在MinGW上的哪个位置。

要解决编译错误,请调整制作配方:

$(TARGET): build $(OBJECTS)
    $(CXX) $(CXXFLAGS) -I. $(OBJECTS) ./libcryptopp.a -o $(TARGET)

上面的配方使用CXX (C ++编译器)而不是CC (C编译器)。 它使用CXXFLAGS (应该类似于-DNDEBUG -g2 -O2 ); 它调出头文件路径( -I. ); 并链接到静态库( ./libcryptopp.a )。 链接到静态库将避免出现下一组问题。

您可以遵循MadScientist的建议,并使用-LXXX-lcryptopp 您甚至可以使用-Wl,-rpath -Wl,-rpath,D:\\Osman\\CnC RA2\\Mix\\ccmix-crypto\\ccmix-crypto 但是最终,使用-L-l会带来很多麻烦。 通过静态链接libcryptopp.a避免将来出现问题。

另请参见GNUmakefile | 在Crypto ++ Wiki上进行编译和链接


您的拳头图片显示了ipchWin32目录。 这通常意味着您使用Visual Studio构建了Crypto ++库。 现在,您正在使用GCC构建程序。 不应该这样混合和匹配编译器。 没有好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM