11

我正在使用 GNU 编译 C++ 应用程序g++。该项目利用了 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++搜索的目录以及使用该选项查找哪些库。当然,有一些简单的路径可以省略,但我指定了它们,因为 makefile 是参数化的。-L-I-l<lib-name>/usr/local/lib

问题

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

/usr/bin/ld: 找不到 -lcrypto

collect2: ld 返回 1 个退出状态

make: * [cppsims_par] 错误 1

但我确实检查了文件夹,一切……libcrypto.so都在里面/usr/lib64/。到底是怎么回事?

4

2 回答 2

5

It may help if you try strace to find why it failed the file lookup

strace -f -e trace=file g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto 
    *.o -o ./myapp.out
于 2013-10-16T14:47:50.697 回答
3

我确实找到了问题,它与这个问题有关:ld cannot find an existing library

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

于 2013-10-17T07:26:17.687 回答