我正在使用GNU g++
编译C ++应用程序。该项目利用了OpenSSL库。
在我的机器上(64位CentOS四核)我编译并链接我的文件。
g++ -g -c -L/usr/local/lib/ -L/usr/lib64/
-I/usr/local/include/ -I/usr/local/ssl/include/
-lcrypto mysrc1.cpp mysrc2.cpp mysrc3.cpp
g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto
*.o -o ./myapp.out
我的应用程序使用MD5
中包含的函数libcrypto.so
。正如您所看到的,我使用g++
,-L
选项以及使用-I
选项查找哪些库,指定-l<lib-name>
dirs的搜索位置。有一些简单的路径,如/usr/local/lib
当然可以省略,但我指定它们是因为makefile是参数化的。
我的问题是我可以成功编译我的东西(第一个命令),但链接失败(第二个命令):
/ usr / bin / ld:找不到-lcrypto
collect2:ld返回1退出状态
make: * [cppsims_par]错误1
但我确实检查了文件夹和所有内容...... libcrypto.so
位于/usr/lib64/
内。发生了什么事?
答案 0 :(得分:4)
如果您尝试使用strace来查找文件查找失败的原因
,这可能会有所帮助strace -f -e trace=file g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto
*.o -o ./myapp.out
答案 1 :(得分:3)
我确实发现了问题并且与此问题有关:ld cannot find an existing library
实际上我没有符号链接libcrypto.so
,编译器无法找到库......