And*_*dry 11 c++ linux linker g++ shared-libraries
我正在使用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
Run Code Online (Sandbox Code Playgroud)
我的应用程序使用MD5包含在中的函数libcrypto.so.正如您所看到的,我指定g++了dirs在哪里搜索使用-L,-I选项以及使用该选项查找的库-l<lib-name>.有一些简单的路径/usr/local/lib,当然可以省略,但我指定它们因为makefile是参数化的.
我的问题是我可以成功编译我的东西(第一个命令),但链接失败(第二个命令):
/ usr/bin/ld:找不到-lcrypto
collect2:ld返回1退出状态
make:* [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
Run Code Online (Sandbox Code Playgroud)