如何强制gcc找到自己的c ++头文件,而不重写CXX变量?

时间:2013-12-19 21:44:30

标签: c++ gcc header compiler-errors include

我最近从源代码编译了gcc:

CC="gcc -g -O3 -msse3 -pipe -isystem /usr/include -m64" \
CXX="g++ -g -O3 -msse3 -pipe -isystem /usr/include -m64" \
LDFLAGS="-Wl,-rpath-link,/usr/lib64:/lib64:/usr/lib32:/lib32" \
  ../gcc-4.8.2/configure \
    --prefix=/usr \
    --libdir=/usr/lib64 \
    --libexecdir=/usr/lib64 \
    --enable-shared \
    --enable-threads=posix \
    --enable-__cxa_atexit \
    --enable-c99 \
    --enable-long-long \
    --enable-clocale=gnu \
    --enable-languages=c,c++,fortran,java,objc,obj-c++ \
    --disable-libstdcxx-pch \
    --enable-cloog-backend=isl \
    --disable-isl-version-check \
    --with-system-zlib \
    --enable-checking=release \
    --enable-libstdcxx-time \
    --enable-lto \
    --with-cpu32=generic \
    --with-cpu64=generic \
    --with-tune32=generic \
    --with-tune64=generic \
    --disable-install-libiberty
make -j1 profiledbootstrap
make install

但是在安装之后,新的c ++编译器不想找到它自己的包含文件,但它们安装在:

/usr/include/c++/4.8.2/

我可以通过覆盖默认的CXX变量来修复此行为

CXX="c++ -I/usr/include/c++/4.8.2/" \
./configure
make
make install

这很奇怪,因为在我安装自己的gcc之前,前一个确实找到了包含文件,而无需覆盖CXX。

有没有办法强制gcc在不重写CXX的情况下找到包含文件?

例如考虑包flac。使用旧的编译器,我可以通过发出以下命令来编译包:

./configure --prefix=/usr \
    --disable-thorough-tests
make
make install

然而,使用新编译器,我必须发出命令:

CXX="c++ -I/usr/include/c++/4.8.2/" \
./configure --prefix=/usr \
    --disable-thorough-tests
make
make install

1 个答案:

答案 0 :(得分:0)

我设法追查问题:错误的符号链接。所以这不是gcc的错。