提问人:vishal saraswat 提问时间:3/24/2023 最后编辑:The Dreams Windvishal saraswat 更新时间:3/24/2023 访问量:75
Cmake 链接问题
Cmake linking issue
问:
我正在尝试创建一个共享库,该库又使用 libtorch 和 libngt。libtorch 提供了一种将项目链接到自身的正确方法,并且效果很好,但不知何故,我在使用 cmake 链接 libngt 时遇到了问题。
我的CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(blksim_test)
find_package(Torch REQUIRED)
link_directories("/usr/local/lib/")
add_executable(test_sim test_sim.cc hash_network.cc hash_pool.cc)
target_include_directories(test_sim PRIVATE ../include)
target_link_libraries(test_sim "${TORCH_LIBRARIES}")
target_link_libraries(test_sim ngt)
set_property(TARGET test_sim PROPERTY CXX_STANDARD 14 )
我遇到以下错误:
Error:
/usr/bin/ld: CMakeFiles/test_sim.dir/hash_pool.cc.o: in function `NGT::Index::open(std::string const&, bool)':
hash_pool.cc:(.text._ZN3NGT5Index4openERKSsb[_ZN3NGT5Index4openERKSsb]+0x2e): undefined reference to `NGT::Index::open(std::string const&, bool, bool)'
/usr/bin/ld: CMakeFiles/test_sim.dir/hash_pool.cc.o: in function `NGT::Index::createGraphAndTree(std::string const&, NGT::Property&, bool)':
hash_pool.cc:(.text._ZN3NGT5Index18createGraphAndTreeERKSsRNS_8PropertyEb[_ZN3NGT5Index18createGraphAndTreeERKSsRNS_8PropertyEb]+0x6c): undefined reference to `NGT::Index::createGraphAndTree(std::string const&, NGT::Property&, std::string const&, unsigned long, bool)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/test_sim.dir/build.make:133: test_sim] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/test_sim.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
我确保导出 并包含 libngt 所在的位置。PATH
LD_LIBRARY_PATH
/usr/local/lib
instance1:~/code$ ls -al /usr/local/lib/libngt.*
-rw-r--r-- 1 root root 4037082 Mar 20 21:40 /usr/local/lib/libngt.a
lrwxrwxrwx 1 root root 11 Mar 20 23:02 /usr/local/lib/libngt.so -> libngt.so.1
lrwxrwxrwx 1 root root 16 Mar 20 23:02 /usr/local/lib/libngt.so.1 -> libngt.so.1.14.5
-rw-r--r-- 1 root root 1581560 Mar 20 21:41 /usr/local/lib/libngt.so.1.14.5
我不知道我做错了什么。我是第一次使用 cmake,所以我几乎可以肯定我链接 libngt 的方式有问题。
我尝试在构建目录中创建一个,但即使这样也无济于事。我不知道我错过了什么。FindNGT.cmake
答: 暂无答案
评论
FindNGT.cmake
ngt
target_link_libraries(test_sim ngt)
nm -gDC /usr/local/lib/libngt.so.1.14.5
__cxx11::
nm
_GLIBCXX_USE_CXX11_ABI