gpt4 book ai didi

clang - 如何为 LLVM 指定自定义 stdlib 目录

转载 作者:行者123 更新时间:2023-12-02 02:31:21 27 4
gpt4 key购买 nike

我有 LLVM 3.3 和 Clang,并且

$ /tmp/clang/bin/clang -print-search-dirs
programs: =/tmp/clang/bin:/usr/lib/gcc/i486-linux-gnu/4.4/../../../../i486-linux-gnu/bin
libraries: =/tmp/clang/bin/../lib/clang/3.3:/usr/lib/gcc/i486-linux-gnu/4.4:/usr/lib/gcc/i486-linux-gnu/4.4/../../../../lib32:/usr/lib/../lib32:/usr/lib/i486-linux-gnu/../../lib32:/usr/lib/gcc/i486-linux-gnu/4.4/../../..:/lib:/usr/lib

如何指示 Clang 使用 /usr/lib/gcc/i486-linux-gnu/4.4 之外的 stdlib(例如 libgcc)目录?我想让它使用 /tmp/mygccstd 代替。

它还在 /usr/lib/lib 中查找。我如何禁用它?

最佳答案

在我的系统上我安装了 3 个编译器。 gcc-7.3.0、gcc-7.2.0 和 clang-6.0

gcc-7.3.0安装到系统路径,是系统默认编译器。

gcc-7.2.0 安装到/usr/local,并且是特定工具的构建要求。

clang-6.0 安装到/usr/local 并用于更严格的警告/错误。

我的 boost 库是用 gcc-7.2.0 编译的,我希望使用 clang 来编译我的特定工具。默认情况下,使用 -stdlib=libstdc++ clang 会找到 gcc-7.3.0,而 boost 将无法链接。

为了解决这个问题,我使用了以下编译标志:

-stdlib=libstdc++ # Tell clang to parse the headers as libstdc++ not libc++
-cxx-isystem /usr/local/include/c++/7.2.0/ # includes for libstdc++
-cxx-isystem /usr/local/include/c++/7.2.0/x86_64-pc-linux-gnu/ # includes for libstdc

以及以下链接器标志:

-L/usr/local/lib64/ # static libstdc++
-L/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/ #static libgcc

您可以使用包含 libstdc++.alibgcc.a 的目录填写您自己的链接器路径,这些目录取决于您的编译器的安装位置。

关于clang - 如何为 LLVM 指定自定义 stdlib 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com