![](/img/trans.png)
[英]c++ cmake/make: linker ld does not find library (missing path?)
[英]C++: linker cannot find -lcrypto, but the library is in the path
我正在使用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
。 正如您所看到的,我使用-L
, -I
選項以及使用-l<lib-name>
選項查找哪些庫來向g++
指定dirs的搜索位置。 有一些簡單的路徑,比如/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
我確實找到了問題並且它與這個問題有關: ld找不到現有的庫
實際上我沒有symlink libcrypto.so
並且編譯器無法找到庫...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.