我最近从源代码编译了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
答案 0 :(得分:0)
我设法追查问题:错误的符号链接。所以这不是gcc的错。