我有 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 使用 stdlib(例如libgcc
) 目录以外的目录/usr/lib/gcc/i486-linux-gnu/4.4
?我想用它/tmp/mygccstd
反而。
它也在寻找/usr/lib
and /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++.a
and libgcc.a
这些将取决于您的编译器的安装位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)