[问题] 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