簡體   English   中英

C ++:鏈接器找不到-lcrypto,但是庫在路徑中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM