为什么我可以针对 libclang-3.5.so 进行编译,而不能针对 libclang.so 进行编译?

为什么我可以针对 libclang-3.5.so 进行编译,而不能针对 libclang.so 进行编译?

apt-get我正在尝试编译一个 C 源文件,该文件需要与我通过(libclang.so)安装的动态库链接。

apt-get在 中安装了 clang 共享库/usr/lib/x86_64-linux-gnu/。以下是相关文件:

$ ls -l /usr/lib/x86_64-linux-gnu/libclang*
lrwxrwxrwx 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.4.so -> libclang-3.4.so.1
-rw-r--r-- 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.4.so.1
lrwxrwxrwx 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.5.so -> libclang-3.5.so.1
-rw-r--r-- 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.5.so.1
lrwxrwxrwx 1 root root /usr/lib/x86_64-linux-gnu/libclang.so.1 -> libclang-3.5.so.1

加载器似乎了解 libclang:

$ ldconfig -p | grep clang
        libclang.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libclang.so.1

事实上,无论我尝试编译的源文件的内容是什么,只要它包含有效的代码,我的问题都是可以重现的。因此,我使用了这个源文件:

$ cat a.c 
int main(int argc, char** argv) {
  return 0;
}

针对 clang 进行编译失败:

$ gcc a.c -L/usr/lib/x86_64-linux-gnu -lclang
/usr/bin/ld: cannot find -lclang
collect2: error: ld returned 1 exit status

但针对 clang-3.5(或 clang-3.4)的编译成功:

$ gcc a.c -L/usr/lib/x86_64-linux-gnu -lclang-3.5
$

我确实需要能够使用-lclang而不是进行链接-lclang-3.5,因为实际上我无法控制此编译器选项在实际问题中的生成方式。我该怎么做才能使-lclang工作?

我正在使用 Ubuntu 14.04 LTS 和 GCC 4.8.2。

相关内容