如何正确配置Clang?

时间:2015-03-17 15:56:49

标签: c++ linux linker llvm 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'蒸馏水

更新 - 这是使用clang编译器的CodeLite的输出窗口:

  

/ bin / sh -c' make -j 2 -e -f Makefile'   ----------构建项目:[ClangTest - Debug] ---------- make [1]:进入目录   ' /运行/媒体/ bs_ld / 8688602a-296D-40e1-BD37-c90e69f45769 /工作区/ CL_C ++ _ WP / ClangTest'   clang ++ -c   " /运行/媒体/ bs_ld / 8688602a-296D-40e1-BD37-c90e69f45769 /工作区/ CL_C ++ _ WP / ClangTest / main.cpp中"   -stdlib = libc ++ -o ./Debug/main.cpp.o -I。 -I /运行/媒体/ bs_ld / 8688602a-296D-40e1-BD37-c90e69f45769 /建造/包括/ C ++ / V1 /   clang ++ -o ./Debug/ClangTest @" ClangTest.txt" -L。   -L / run / media / bs_ld / 8688602a-296d-40e1-bd37-c90e69f45769 / build / lib / / usr / bin / ld:找不到crtbegin.o:没有这样的文件或目录   / usr / bin / ld:找不到-lstdc ++ / usr / bin / ld:找不到-lgcc_s   / usr / bin / ld:找不到-lgcc clang-3.7:错误:链接器命令失败   退出代码1(使用-v查看调用)ClangTest.mk:76:配方   对于目标' Debug / ClangTest'失败make [1]: * [Debug / ClangTest]   错误1 make [1]:离开目录   ' /运行/媒体/ bs_ld / 8688602a-296D-40e1-BD37-c90e69f45769 /工作区/ CL_C ++ _ WP / ClangTest'   Makefile:4:目标配方'全部'失败了:* [全部]错误2 0   错误,0警告

1 个答案:

答案 0 :(得分:2)

您应该可以使用可选的make install运行DESTDIR=/......,这样就不会破坏您的系统文件。

由于您使用的是OpenSUSE,您可以使用您的发行版构建服务,并从here安装SVVM版本的LLVM-Clang。您也应该能够找到libc ++和LLVM。

否则,make install DESTDIR=/opt/llvm应该有效,然后您可以将/opt/llvm/bin/添加到PATH并使用libc ++添加此编译和链接选项:-stdlib=libc++。您在/opt/llvm/lib中也需要LD_LIBRARY_PATH之类的内容,以便找到libc++

这应该可以开箱即用,但我只使用过我的发行版包,而不是自制的Clang来做这件事。

请注意,Clang仍然使用您的系统链接器ld,这很好。目前,LLVM尚未提供此程序的全功能替代方案,但they are working on it

编辑:您似乎卸载了太多:Clang还使用GCC crtbegin和crtend目标文件。所以只需再次安装GCC以及glibc及其开发包。