在Ubuntu上,我有两个目录:build
和src
。在src
中,我的CMakeLists.txt
文件包含以下行:
add_executable(Test main.cpp)
target_link_libraries(Test libCamera.so)
在构建目录(
cmake ../src
)中运行cmake之后,然后将库文件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操作系统不同,在Windows中,dll文件与可执行文件一起存储,在Linux中不是这样,因此它将是/usr/lib
,而不是/usr/bin
。另外,您可以更改LD_LIBRARY_PATH
变量,以使程序在自定义位置中查找库。关于c++ - CMake链接到共享库找不到库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31413366/