为什么找不到库,即使它们显然位于-L路径上?

我有以下链接命令(抱歉它的长度,但我试图尽可能保留原始,除了缩短一些路径):

CC
CMakeFiles / main.dir / main.cpp.o -o main -L / me / libs / cgal / lib -L ​​/ me / libs / tbb / tbb-2017_U7 / build / 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命令检查。 我得到以下答案:

  • * .o文件是ELF 64-bit LSB relocatable, x86-64, version 1 (GNU/Linux), not stripped
  • libtbb.so.2是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 

它似乎检查了一些文件,然后最终找到了它正在寻找的文件。