我有以下链接命令(抱歉它的长度,但我试图将其保留为原始版本,除了缩短某些路径):
CC
CMakeFiles / main.dir / main.cpp.o -o main -L / me / libs / cgal / lib -L /我/库/ TBB / TBB-2017_U7 /编译/ linux_intel64_gcc_cc5.3.0_libc2.19_kernel3.12.61_release -rdynamic -lmpfr -lgmp /me/libs/cgal/lib/libCGAL_ImageIO.a /me/libs/cgal/lib/libCGAL.a -lboost_thread -lboost_system -lz /me/libs/cgal/lib/libCGAL_ImageIO.a /me/libs/cgal/lib/libCGAL.a -lboost_thread -lboost_system -lz -ltbb -ltbbmalloc -Wl,-rpath,/ me / libs / cgal / lib :/me/libs/tbb/tbb-2017_U7/build/linux_intel64_gcc_cc5.3.0_libc2.19_kernel3.12.61_release
它会告诉我:
/ usr / bin / ld:找不到-ltbb
/ usr / bin / ld:找不到-ltbbmalloc
最有可能与问题相关的是我有-L/me/libs/tbb/tbb-2017_U7/build/linux_intel64_gcc_cc5.3.0_libc2.19_kernel3.12.61_release
和-ltbb - ltbbmalloc
。在-L
目录中,有一个libtbb.so
和一个libtbbmalloc.so
。
但是为什么链接器找不到这些库,即使它们显然存在于-L
给出的目录中?
EDIT1:我被要求检查file
命令。我得到以下答案:
ELF 64-bit LSB relocatable, x86-64, version 1 (GNU/Linux), not stripped
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
似乎不完全相同,但我不知道它是否兼容。基本上,我用相同的编译器编译它。但我不确定TBB的构建系统是否可能潜入其他一些选项。
EDIT2 :我还被要求使用strace
。一段简短的摘录显示:
open("/me/libs/tbb/tbb-2017_U7/build/linux_intel64_CC_cc5.3.0_libc2.19_kernel3.12.61_release/libtbb.so", O_RDONLY) = 12
[pid 102330] open("/me/libs/tbb/tbb-2017_U7/build/linux_intel64_CC_cc5.3.0_libc2.19_kernel3.12.61_release/libtbb.so", O_RDONLY) = 11
[pid 102330] open("libtbb.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 102330] open("/me/libs/cgal/lib/libtbb.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 102330] open("/me/libs/tbb/tbb-2017_U7/build/linux_intel64_CC_cc5.3.0_libc2.19_kernel3.12.61_release/libtbb.so.2", O_RDONLY) = 11
它似乎检查了一些文件,然后最终找到了它正在寻找的文件。