如何为 clang+llvm 二进制包安装 LLVMgold.so?

mas*_*sec 5 llvm-clang clang++ ubuntu-14.04

我想使用 llvm 控制流完整性,我使用了 Ubuntu 14.04 附带的 clang+llvm 二进制打包版本 7.0.1。当我使用带有选项 '-fsanitize=cfi -flto -fvisibility=hidden' 的 clang++ 时,出现以下错误:

/usr/bin/ld: /home/username/llvm-7.0.1/bin/../lib/LLVMgold.so: error loading plugin: /home/username/llvm-7.0.1/bin/../lib/LLVMgold.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

知道如何在不使用启用黄金的选项编译源代码的情况下解决这个问题吗?

小智 0

我最近在 llvm 10 版本上遇到了同样的问题。这似乎不是 llvm 的错误,所以将来不会修补。所以,我在这里写了如何解决这个问题。

构建 llvm 后,您应该运行该make install命令。但 LLVMgold.so 通常安装到“/usr/local/lib”。因此 clang 显示如下消息 '/../lib/LLVMgold.so: 无法打开共享对象文件: 没有这样的文件或目录'

您必须将 LLVMgold 链接到正确的路径。在 ubuntu 中,“ln -sf /usr/lib/llvm-3.4/lib/LLVMgold.so /usr/local/lib/LLVMgold.so”将修复此问题。