cmake之 第三方庫(kù)始終報(bào)錯(cuò) /usr/bin/ld: cannot find -lxxx?
為什么自己要添加始終?感覺(jué)很奇怪?
加載第三方庫(kù)對(duì)于一個(gè)程序是很經(jīng)常碰到的事情。
首先,自己應(yīng)該很清楚第三方庫(kù)的位置哈。將庫(kù)添加到工程中。
#注意:動(dòng)態(tài)庫(kù)簡(jiǎn)寫(xiě),全稱均可;靜態(tài)庫(kù)要全稱。
TARGET_LINK_LIBRARIES(main hello)
#TARGET_LINK_LIBRARIES(main libhello.a)
1
2
3
此時(shí),編譯報(bào)錯(cuò)/usr/bin/ld: cannot find -lxxx
使用cmake提供的LINK_DIRECTORIES指定第三方庫(kù)路徑。
LINK_DIRECTORIES(/usr/lib/hello)
1
編譯,再次報(bào)錯(cuò)/usr/bin/ld: cannot find -lxxx?
通過(guò)分析官方文檔,發(fā)現(xiàn)這個(gè)問(wèn)題其實(shí)是代碼的順序問(wèn)題,務(wù)必LINK_DIRECTORIES 要放在ADD_EXECUTABLE() or ADD_LIBRARY()前面。
官方文檔:
https://cmake.org/cmake/help/v3.5/command/link_libraries.html
ok
————————————————
最終解決: 竟然是不用-l 不知道是不是和cmake 版本有問(wèn)題。
target_link_libraries(cyber_demo -lcyber libcrypto.a libssl.a -lpthread)
原文鏈接:https://blog.csdn.net/weixin_39956356/article/details/100412382
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。