我正在尝试运行一个使用 Clang 和 LLVM 的工具。工具名称是 docker 提供的 cppgrep。请从 github 存储库中找到它 - https://github.com/peter-can-talk/cppnow-2017。我曾尝试使用 Ubuntu 16.04 和 17.10,我得到了与以下相同的错误:
root@522051d201d2:/home# ./cppgrep -help
./cppgrep: /usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1: version `LLVM_4.0' not found (required by ./cppgrep)
./cppgrep: /usr/lib/x86_64-linux-gnu/libclang-4.0.so.1: version `LLVM_4.0' not found (required by ./cppgrep)
root@522051d201d2:/home#
经过网上搜索,我发现我必须设置环境变量 LD_LIBRARY_PATH。因此,作为第一步,我在 docker 中找到了库文件的位置,请在下面找到输出:
root@522051d201d2:/home# find / -iname *libclang*.so*
/usr/lib/x86_64-linux-gnu/libclang-4.0.so
/usr/lib/x86_64-linux-gnu/libclang-4.0.so.1
/usr/lib/llvm-4.0/lib/libclang.so.1
/usr/lib/llvm-4.0/lib/libclang-4.0.so
/usr/lib/llvm-4.0/lib/libclang-4.0.0.so
/usr/lib/llvm-4.0/lib/libclang.so
/usr/lib/llvm-4.0/lib/libclang-4.0.so.1
/usr/lib/llvm-4.0/lib/clang/4.0.0/lib/linux/libclang_rt.dyndd-x86_64.so
/usr/lib/llvm-4.0/lib/clang/4.0.0/lib/linux/libclang_rt.asan-i686.so
/usr/lib/llvm-4.0/lib/clang/4.0.0/lib/linux/libclang_rt.asan-x86_64.so
/usr/lib/llvm-4.0/lib/clang/4.0.0/lib/linux/libclang_rt.asan-i386.so
在这一步之后,我设置 LD_LIBRARY_PATH 如下:
root@522051d201d2:/home# echo $LD_LIBRARY_PATH
/usr/lib:/usr/lib/llvm-4.0/lib/:/usr/lib/x86_64-linux-gnu/
最后,我使用命令导出了它export LD_LIBRARY_PATH
。现在,如果我尝试运行 cppgrep 工具,我仍然会遇到同样的错误。构建docker后测试工具的命令如下:(1)cd
进入cppgrep目录,如code/cppgrep
,(2)进入docker容器并挂载文件夹/home
:
(3)使用命令$ docker run -it -v $PWD:/home clang
运行cppgrep 。./cppgrep 'x' test.cpp
它应该返回名称为 x 的函数和变量。
要复制错误,请在从 github 存储库下载并解压缩文件后,使用$ docker build -t clang .
命令构建 docker 容器。然后按照上一段中的 1,2,3 步骤进行操作。