linux C++:连接器找不到-lcrypto,但程式库位于路径中

j91ykkif  于 2022-11-22  发布在  Linux
关注(0)|答案(3)|浏览(166)

我正在使用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
collect 2:ld返回1退出状态
make:***[cppsims_par]错误1
但是我确实检查了文件夹和所有的东西... libcrypto.so/usr/lib64/里面,这是怎么回事?

pgvzfuti

pgvzfuti1#

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

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

pftdvrlh2#

我确实发现了这个问题,它与这个问题有关:ld cannot find an existing library
实际上我没有符号链接libcrypto.so,编译器也找不到库...

k7fdbhmy

k7fdbhmy3#

有相关问题,检查痕迹后解决。
我有
-L<my/path/to/lib> -llib_some_library
而它本应该
-L<my/path/to/lib> -lsome_library

相关问题