代码之家  ›  专栏  ›  技术社区  ›  AnArrayOfFunctions

如何正确配置Clang?

  •  0
  • AnArrayOfFunctions  · 技术社区  · 10 年前

    我刚刚整理了LLVM、Clang和libc++的最新代表。然而,现在我不知道如何配置环境以使用它们。我在$PATH中添加了一个编译二进制文件,并设置了

    $D_LIBRARY_PATH=$(llvm配置--libdir)

    但无论如何,当我用示例文件测试运行“clang”时,它使用了一些“/usr/bin/ld”链接器,我不知道它是什么(因为我卸载了“g++”,因为我认为这是问题所在(在“clang”使用其中的链接器之前),我没有任何其他C++编译器)。

    那么现在我如何指出正确的“llvm-ld”、libc++include和库路径?我不想每次都传递一些复杂的论点。也许我应该设置一些环境变量。

    我也在使用具有相同效果的KDevelop。

    不要评判我这听起来是否愚蠢,但这是我第一次使用Linux(以前一直使用Windows)。我正在使用最新的“OpenSUSE”dist。

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

    /bin/sh-c'生成-j 2-e-f生成文件' ----------正在生成项目:[CrangTest-Debug]-----------make[1]:正在进入目录 '/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest' 叮当声++-c “/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest/main.cpp” -stdlib=libc++-o/调试/main.cpp.o-I-I/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Build/include/c++/v1/ 叮当声++-o/调试/ClangTest@“ClangTest.txt”-L。 -L/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Build/lib//usr/bin/ld:找不到crtbegine。o:没有这样的文件或目录 /usr/bin/ld:找不到-lsdc++/usr/bin/ld::找不到-lgcc_s /usr/bin/ld:找不到-lgcc-clang-3.7:错误:链接器命令失败 退出代码1(使用-v查看调用)ClangTest.mk:76:recipe 对于目标“Debug/ClamgTest”,未能生成[1]: *[调试/分类测试] 错误1生成[1]:正在离开目录 '/run/media/bs_ld/8688602a-296d-40e1-bd37-c90e69f45769/Workspace/CL_C++_WP/ClangTest' 生成文件:4:目标“All”的配方失败生成:* [All]错误2 0 错误,0个警告

    1 回复  |  直到 10 年前
        1
  •  2
  •   rubenvb    10 年前

    你应该能够跑 make install 也许是可选的 DESTDIR=/...... 这样它就不会破坏您的系统文件。

    既然您使用的是OpenSUSE,那么您不妨使用发行版的构建服务,并从 here 。您应该能够找到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及其开发包即可。