C ++:链接器找不到-lcrypto,但是库在路径中

时间:2013-10-16 14:24:26

标签: c++ linux linker g++ shared-libraries

我正在使用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/内。发生了什么事?

2 个答案:

答案 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,编译器无法找到库......