我有一个名为Kinova.API.CommLayerUbuntu.so
的库,我想用cmake链接。所以,在我的CMakeLists.txt
文件中,我有一行:
target_link_libraries(demo ~/Libraries/Kinova.API.CommLayerUbuntu.so)
但是,在编译期间,我收到错误:
cannot find -lKinova.API.CommLayerUbuntu
这令我感到困惑,因为我告诉cmake寻找Kinova.API.CommLayerUbuntu.so
,而不是-lKinova.API.CommLayerUbuntu
。请有人解释一下发生了什么事吗?
在详细模式下,cmake输出提供以下内容:
Linking CXX executable demo
/usr/bin/cmake -E cmake_link_script CMakeFiles/demo.dir/link.txt --verbose=1
/usr/bin/c++ CMakeFiles/demo.dir/demo.cpp.o -o demo -L/home/karnivaurus/Libraries -rdynamic -lKinova.API.CommLayerUbuntu -Wl,-rpath,/home/karnivaurus/Libraries
/usr/bin/ld: cannot find -lKinova.API.CommLayerUbuntu
答案 0 :(得分:0)
-l
只是用于告诉编译器链接库的标志。您的图书馆名称是非标准的。编译器将删除-l
并将lib
添加到您使用的字符串中,并查找名为libKinova.API.CommLayerUbuntu.so
的文件。
这似乎是此API分发的问题。您可以尝试通过创建从libKinova.API.CommLayerUbuntu.so
到Kinova.API.CommLayerUbuntu.so
的符号链接来解决此问题。