首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手工建造的GCC和Clang;Clang看的是系统C++路径,而不是GCC的

手工建造的GCC和Clang;Clang看的是系统C++路径,而不是GCC的
EN

Stack Overflow用户
提问于 2018-05-24 13:27:21
回答 1查看 1.4K关注 0票数 1

问题

如何使我的自定义安装clang在正确的位置为C++头(即我的自定义安装gcc)?

系统

我目前正在使用所有默认库的RHEL 6计算机。

在一个非系统目录中,我成功地编译了mpc、mpfr、gmp、cmake、python、gcc (4.9.3和8.1.0)和clang (5.0.0使用gcc 4.9.3和6.0.0使用gcc 8.1.0)。

gcc被配置为--prefix=... --with-gmp=... --with-mpfr=... --with-mpc=... --disable-multilib

gcc的(及其所有依赖项) bin目录被添加到PATH中,lib/lib 64目录被添加到LD_LIBRARY_PATH中,CC/CXX被分别设置为my gcc/g++。

然后用cmake ../llvm -DCMAKE_INSTALL_PREFIX=... -DCMAKE_BUILD_TYPE=Release -DLLDB_DISABLE_LIBEDIT=True -DCMAKE_C_COMPILER=${CC} -DCMAKE_CXX_COMPILER=${CXX}配置clang。请注意,我设置了CMAKE_C_COMPILER/CMAKE_CXX_COMPILER,尽管我不应该这样做,因为其他一些人因此说他们通过这样做来修复它,我想可能发生了一些奇怪的事情,但这并没有修复它。

问题

如果我编译这个测试文件:

代码语言:javascript
复制
#include <atomic>

int main ( int , char const** )
{
    std::atomic<int> i (0) ;
    i.fetch_add ( 2 ) ;
    return 0 ;
}

我得到了这个结果:

代码语言:javascript
复制
[redacted]~/Temporary% g++ -std=c++11 main.cpp
[redacted]~/Temporary% clang++ -std=c++11 main.cpp
main.cpp:2:10: fatal error: 'atomic' file not found
#include <atomic>
         ^~~~~~~~
1 error generated.

在另一些代码中,我有更长的包含路径,这些路径会产生更多有关问题的信息。其中一个是#include <mutex>,它会产生这个错误:

代码语言:javascript
复制
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/mutex:45:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/system_error:163:28: error: incompatible operand types ('void (*)()' and 'bool')
    { return _M_value != 0 ? &__not_bool_type : false; }

这清楚地表明,它是到内置的标题,而不是那些,我已经核实是gcc 8.1.0安装的一部分。

其他备注

我已经看到--gnu-toolchainconfigure上有一个选项(从2012年起),但是在当前的版本中它似乎没有出现。我相信我在运行时看到了同样的选择,但是要求用户这样做(当他们已经为替换他们的整个编译器系统提供了某种东西时)是不可接受的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2018-05-24 21:49:31

结果是需要更新clang/Config/config.h文件,这是由cmake进程自动生成的。

具体来说,需要设置GCC_INSTALL_PREFIX

如果将gcc安装配置为../gcc/configure --prefix=/path/to/my/gcc ...,则应该执行cmake ../llvm -DGCC_INSTALL_PREFIX=/path/to/my/gcc ...

然后设置clang,以便在建成后查找正确的位置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50510626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档