我刚刚编译了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警告
答案 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及其开发包。