我正在使用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/
里面,这是怎么回事?
3条答案
按热度按时间pgvzfuti1#
如果您尝试strace查找文件查找失败的原因,可能会有所帮助
pftdvrlh2#
我确实发现了这个问题,它与这个问题有关:ld cannot find an existing library
实际上我没有符号链接
libcrypto.so
,编译器也找不到库...k7fdbhmy3#
有相关问题,检查痕迹后解决。
我有
-L<my/path/to/lib> -llib_some_library
而它本应该
-L<my/path/to/lib> -lsome_library