/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1: 找不到版本“LLVM_4.0”
/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1: version `LLVM_4.0' not found
我正在尝试 运行 一个使用 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
下的文件夹:
$ docker run -it -v $PWD:/home clang
(3) 运行 cppgrep 使用 ./cppgrep 'x' test.cpp
命令。
它应该是 return 个名称为 x 的函数和变量。
要复制错误,从 github 存储库下载并解压缩文件后,使用 $ docker build -t clang .
命令构建 docker 容器。然后按照上面段落中的1,2,3步骤。
折腾了几天,解决了!!
我对错误原因的初步假设是正确的。 clang-llvm环境对cppgrep工具不可用,但我在向cppgrep工具提供环境信息的方式上犯了错误。
答案有两个步骤:(1) 更改 Makefile 以指向安装 llvm 的正确位置,在我的例子中,我将 Makefile 中的以下行从 HEADERS := -isystem /llvm/include/
更改为 HEADERS := -isystem /usr/lib/llvm-4.0/include/
. (2) 你必须使用make
命令再次编译文件,输入一个空的space并在给出命令前保存cppgrep.cpp文件,否则你会得到一个信息作为 make: Nothing to be done for 'all'.
.
就是这样,现在您应该可以通过 运行 宁 ./cppgrep 'x' test.cpp
或 ./cppgrep -help
运行 cppgrep 工具。使用本docker中的其他工具,如ast-dump、mccabe等,使用前必须按照上述两步进行。
我正在尝试 运行 一个使用 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
下的文件夹:
$ docker run -it -v $PWD:/home clang
(3) 运行 cppgrep 使用 ./cppgrep 'x' test.cpp
命令。
它应该是 return 个名称为 x 的函数和变量。
要复制错误,从 github 存储库下载并解压缩文件后,使用 $ docker build -t clang .
命令构建 docker 容器。然后按照上面段落中的1,2,3步骤。
折腾了几天,解决了!!
我对错误原因的初步假设是正确的。 clang-llvm环境对cppgrep工具不可用,但我在向cppgrep工具提供环境信息的方式上犯了错误。
答案有两个步骤:(1) 更改 Makefile 以指向安装 llvm 的正确位置,在我的例子中,我将 Makefile 中的以下行从 HEADERS := -isystem /llvm/include/
更改为 HEADERS := -isystem /usr/lib/llvm-4.0/include/
. (2) 你必须使用make
命令再次编译文件,输入一个空的space并在给出命令前保存cppgrep.cpp文件,否则你会得到一个信息作为 make: Nothing to be done for 'all'.
.
就是这样,现在您应该可以通过 运行 宁 ./cppgrep 'x' test.cpp
或 ./cppgrep -help
运行 cppgrep 工具。使用本docker中的其他工具,如ast-dump、mccabe等,使用前必须按照上述两步进行。