如何正确配置 Clang?
How to properly configure Clang?
我刚刚编译了 LLVM、Clang 和 libc++ 的最新版本。但是现在我不知道如何配置环境来使用它们。我在 $PATH 中添加了一个编译二进制文件并设置了
$D_LIBRARY_PATH=$(llvm-config --libdir)
但是无论如何,当我用示例文件测试 运行 'clang' 时,它使用了一些“/usr/bin/ld”链接器,我不知道它是什么(因为我已经卸载了 'g++' 因为认为这是问题所在(在 'clang' 使用它的一些链接器之前)并且我没有任何其他 C++ 编译器)。
那么现在如何指出正确的 'llvm-ld'、libc++ 包含和库路径?我不想每次都传递一些复杂的参数。也许我应该设置一些环境变量。
我也在用KDevelop,效果一样。
如果这听起来很愚蠢,请不要批评我,但这是我第一次使用 Linux(之前一直使用 Windows)。我正在使用最新的 'OpenSUSE' dist.
更新 - 这是使用 clang 编译器的 CodeLite 的输出 window:
/bin/sh -c 'make -j 2 -e -f Makefile'
----------Building project:[ ClangTest - Debug ]---------- make[1]: Entering directory
'/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest'
clang++ -c
"/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest/main.cpp"
-stdlib=libc++ -o ./Debug/main.cpp.o -I. -I/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Build/include/c++/v1/
clang++ -o ./Debug/ClangTest @"ClangTest.txt" -L.
-L/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Build/lib/ /usr/bin/ld: cannot find crtbegin.o: No such file or directory
/usr/bin/ld: cannot find -lstdc++ /usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find -lgcc clang-3.7: error: linker command failed
with exit code 1 (use -v to see invocation) ClangTest.mk:76: recipe
for target 'Debug/ClangTest' failed make[1]: * [Debug/ClangTest]
Error 1 make[1]: Leaving directory
'/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest'
Makefile:4: recipe for target 'All' failed make: * [All] Error 2 0
errors, 0 warnings
您应该能够 运行 make install
,也许还有一个可选的 DESTDIR=/......
,这样它就不会破坏您的系统文件。
既然你在 OpenSUSE 上,你不妨使用你的发行版的构建服务,并从 here 安装 LLVM-Clang 的 SVN 版本。您应该也能找到 libc++ 和 LLVM 本身。
否则,make install DESTDIR=/opt/llvm
应该可以工作,然后您可以将 /opt/llvm/bin/
添加到 PATH
并通过添加此编译和 link 选项来使用 libc++:-stdlib=libc++
.您还需要 LD_LIBRARY_PATH
中的 /opt/llvm/lib
之类的东西才能找到 libc++
。
这应该开箱即用,但我只使用过我的发行版的包,而不是一个自建的 Clang 来做到这一点。
请注意,Clang 仍在使用您的系统 linker,ld
,这很好。目前,LLVM 尚未提供该程序的完整功能替代方案,但 they are working on it.
编辑:看来你卸载太多了:Clang 还使用 GCC crtbegin 和 crtend 目标文件。所以只需再次安装 GCC 以及 glibc 及其开发包。
我刚刚编译了 LLVM、Clang 和 libc++ 的最新版本。但是现在我不知道如何配置环境来使用它们。我在 $PATH 中添加了一个编译二进制文件并设置了
$D_LIBRARY_PATH=$(llvm-config --libdir)
但是无论如何,当我用示例文件测试 运行 'clang' 时,它使用了一些“/usr/bin/ld”链接器,我不知道它是什么(因为我已经卸载了 'g++' 因为认为这是问题所在(在 'clang' 使用它的一些链接器之前)并且我没有任何其他 C++ 编译器)。
那么现在如何指出正确的 'llvm-ld'、libc++ 包含和库路径?我不想每次都传递一些复杂的参数。也许我应该设置一些环境变量。
我也在用KDevelop,效果一样。
如果这听起来很愚蠢,请不要批评我,但这是我第一次使用 Linux(之前一直使用 Windows)。我正在使用最新的 'OpenSUSE' dist.
更新 - 这是使用 clang 编译器的 CodeLite 的输出 window:
/bin/sh -c 'make -j 2 -e -f Makefile' ----------Building project:[ ClangTest - Debug ]---------- make[1]: Entering directory '/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest' clang++ -c "/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest/main.cpp" -stdlib=libc++ -o ./Debug/main.cpp.o -I. -I/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Build/include/c++/v1/ clang++ -o ./Debug/ClangTest @"ClangTest.txt" -L. -L/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Build/lib/ /usr/bin/ld: cannot find crtbegin.o: No such file or directory /usr/bin/ld: cannot find -lstdc++ /usr/bin/ld: cannot find -lgcc_s /usr/bin/ld: cannot find -lgcc clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation) ClangTest.mk:76: recipe for target 'Debug/ClangTest' failed make[1]: * [Debug/ClangTest] Error 1 make[1]: Leaving directory '/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest' Makefile:4: recipe for target 'All' failed make: * [All] Error 2 0 errors, 0 warnings
您应该能够 运行 make install
,也许还有一个可选的 DESTDIR=/......
,这样它就不会破坏您的系统文件。
既然你在 OpenSUSE 上,你不妨使用你的发行版的构建服务,并从 here 安装 LLVM-Clang 的 SVN 版本。您应该也能找到 libc++ 和 LLVM 本身。
否则,make install DESTDIR=/opt/llvm
应该可以工作,然后您可以将 /opt/llvm/bin/
添加到 PATH
并通过添加此编译和 link 选项来使用 libc++:-stdlib=libc++
.您还需要 LD_LIBRARY_PATH
中的 /opt/llvm/lib
之类的东西才能找到 libc++
。
这应该开箱即用,但我只使用过我的发行版的包,而不是一个自建的 Clang 来做到这一点。
请注意,Clang 仍在使用您的系统 linker,ld
,这很好。目前,LLVM 尚未提供该程序的完整功能替代方案,但 they are working on it.
编辑:看来你卸载太多了:Clang 还使用 GCC crtbegin 和 crtend 目标文件。所以只需再次安装 GCC 以及 glibc 及其开发包。