[問題] cmake有library undefined reference

作者: owem0410 (閒學生)   2019-07-29 02:35:46
開發平台(Platform): (Ex: Win10, Linux, ...)
Docker(linux ubuntu 16.04)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Redis
問題(Question)D:
在一個openvino的smaple中
想要
#include <hiredis/hiredis.h>
但是卻跑出
main.cpp:(.text+0x691): undefined reference to `redisCommand'
main.cpp:(.text+0x699): undefined reference to `freeReplyObject'
上網查後應該是庫沒有export
所以在環境變數中
export LD_LIBRARY_PATH=/usr/local/lib/libhiredis:$LD_LIBRARY_PATH
也在export中確定有此資料夾
但狀況卻一樣
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
main.cpp:(.text+0x691): undefined reference to `redisCommand'
main.cpp:(.text+0x699): undefined reference to `freeReplyObject'
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
最上層的 CMakeLists
https://hackmd.io/@YlZanT8HShi_e7mTutiZ0g/r1bDHJ2fB
專案 cmakelist
https://hackmd.io/@YlZanT8HShi_e7mTutiZ0g/SJybuPozB
補充說明(Supplement):
作者: LPH66 (-6.2598534e+18f)   2019-07-29 10:58:00
LD_LIBRARY_PATH 是執行期的東西, 你這是連結期錯誤你可能要找你的編譯器/連結器裡尋找函式庫路徑的選項(印象中是 -L (大L) 之類的?)喔, 是 cmake...有看到 link_directories(${LIB_FOLDER})但看起來好像沒有設定 LIB_FOLDER 變數的指令?加個 set(LIB_FOLDER <連結函式庫所在目錄>) 試試最上層還是沒看到 LIB_FOLDER
作者: Lipraxde (Lipraxde)   2019-07-29 22:43:00
cmake 通常要用 target_link_libraries 去添加要連結的庫,你不是找不到 library 是根本沒去 link 它吧

Links booklink

Contact Us: admin [ a t ] ucptt.com