[英]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 ++构建目录工作时,该项目不使用include
和lib
(如您的图片所示)。 一切都放置在根目录中(如您的图片所示)。
如果执行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上进行编译和链接 。
您的拳头图片显示了ipch
和Win32
目录。 这通常意味着您使用Visual Studio构建了Crypto ++库。 现在,您正在使用GCC构建程序。 您不应该这样混合和匹配编译器。 没有好处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.