![为什么我可以针对 libclang-3.5.so 进行编译,而不能针对 libclang.so 进行编译?](https://linux22.com/image/1102869/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%8F%AF%E4%BB%A5%E9%92%88%E5%AF%B9%20libclang-3.5.so%20%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91%EF%BC%8C%E8%80%8C%E4%B8%8D%E8%83%BD%E9%92%88%E5%AF%B9%20libclang.so%20%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91%EF%BC%9F.png)
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。