Ubuntu17.10下Doxygen启动报错:缺失libclang.so.6(LLVM_6.0版本)共享库
解决Doxygen启动时找不到libclang.so.6的问题
看起来你踩了Ubuntu 17.10+Doxygen依赖匹配的坑——这个版本的Ubuntu默认软件源里的clang版本和你安装的Doxygen要求的LLVM 6.0不兼容,而且LLVM的版本符号是强绑定的,高版本库没法通过简单符号链接替代低版本。试试下面几个针对性的解决方案:
方案一:安装LLVM 6.0官方库
Ubuntu 17.10默认源里没有LLVM 6.0的包,你需要手动添加对应源并安装:
- 先导入LLVM的GPG密钥:
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - 添加适配Ubuntu 17.10(代号
artful)的LLVM 6.0源:echo "deb http://apt.llvm.org/artful/ llvm-toolchain-artful-6.0 main" | sudo tee /etc/apt/sources.list.d/llvm.list - 更新源并安装所需库:
sudo apt update && sudo apt install libclang-6.0-dev
安装完成后再启动Doxygen,应该就能正常加载依赖了。
方案二:手动指定已有libclang的路径
如果你已经通过其他渠道(比如手动下载LLVM 6.0二进制包)拿到了libclang.so.6,可以直接告诉系统这个库的位置:
- 临时生效:假设库文件在
/path/to/llvm6/lib目录下,用以下命令启动Doxygen:LD_LIBRARY_PATH=/path/to/llvm6/lib doxygen - 永久生效:把库路径写入系统配置文件:
echo "/path/to/llvm6/lib" | sudo tee /etc/ld.so.conf.d/llvm6.conf sudo ldconfig
之后正常启动Doxygen即可。
方案三:使用静态编译版Doxygen
如果不想折腾系统依赖,可以直接下载静态编译版本的Doxygen——这类版本会把所有依赖库打包进去,完全不需要系统提供libclang:
- 前往Doxygen官方下载页面,找到对应x86-64架构的静态编译包(文件名通常包含
static标识) - 解压包后直接运行里面的
doxygen二进制文件即可。
为什么之前的符号链接方法没用?
你尝试的2017年的符号链接方案,本质是把高版本libclang伪装成低版本,但LLVM的版本符号是严格绑定的,高版本库(比如clang 7.0)里并没有LLVM_6.0这个特定版本的符号,所以链接后仍然会触发报错,必须使用对应版本的库才能解决。
内容的提问来源于stack exchange,提问作者Sreyam
相关产品推荐
相关产品推荐

