在 Ubuntu 上,我有两个目录:build
and src
. In src
, my CMakeLists.txt
文件有以下几行:
add_executable(Test main.cpp)
target_link_libraries(Test libCamera.so)
在构建目录中运行 cmake 后(cmake ../src
),然后我复制我的库文件libCamera.so
进入构建目录。运行 make 后,main.cpp.o
文件编译成功,但在链接过程中收到以下错误:
/usr/bin/ld: cannot find -lCamera
为什么是这样?共享库与我正在构建的目录位于同一目录中...如果我将库复制到,也会发生同样的事情/usr/bin
...
你不应该添加前缀lib
和后缀.so
库的,所以只需使用:
target_link_libraries(Test Camera)
如果找不到您的库,您可能需要添加库所在的目录:
link_directories( /home/user/blah ) # for specific path
link_directories( ${CMAKE_CURRENT_BINARY_DIR} ) # if you put library where binary is generated
注意:您将 lib 复制到/usr/bin
但与 Windows 中 dll 文件与可执行文件一起存储不同,在 Linux 中情况并非如此,所以它是/usr/lib
, not /usr/bin
。你也可以改变LD_LIBRARY_PATH
变量使您的程序在自定义位置查找库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)