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

C++: linker cannot find -lcrypto, but the library is in the path

本文关键字:路径 -lcrypto 链接 找不到 C++      更新时间:2023-10-16

我正在使用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

我的应用程序使用包含在libcrypto.so中的函数MD5。如您所见,我指定g++目录,使用-L-I选项以及使用-l<lib-name>选项查找哪些库。当然,有一些像/usr/local/lib这样的琐碎路径可以省略,但我指定了它们,因为 makefile 是参数化的。

问题所在

我的问题是我可以成功编译我的东西(第一个命令),但链接失败(第二个命令):

/

usr/bin/ld: 找不到 -lcrypto

收集2:LD 返回 1 个退出状态

制造: * [cppsims_par] 错误 1

但我确实检查了文件夹和所有内容... libcrypto.so/usr/lib64/里面.这是怎么回事?

如果您尝试 strace 查找文件查找失败的原因,可能会有所帮助

strace -f -e trace=file g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto 
    *.o -o ./myapp.out

我确实发现了问题,它与这个问题有关:ld 找不到现有的库

实际上我没有符号链接libcrypto.so编译器无法找到库......

我有相关问题,并在检查跟踪后解决了它。

我有

-L<my/path/to/lib> -llib_some_library

当它应该在

-L<my/path/to/lib> -lsome_library