我想使用llvm控制流完整性,并且我使用了Ubuntu 14.04附带的clang + llvm二进制打包版本7.0.1。当我将clang ++与选项'-fsanitize = cfi -flto -fvisibility = hidden'一起使用时,出现以下错误:
/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
有什么主意,如何在不使用启用黄金的选项编译源代码的情况下解决该问题?
答案 0 :(得分: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' 会解决这个问题。