自定义构建的gcc 4.6.3和gcc 5.4.0包括搜索列表不同

时间:2018-04-22 12:28:37

标签: gcc ubuntu-16.04

我需要在Ubuntu 16上构建一些旧的gcc版本。主要目标是4.6.3,但似乎我有一个包含搜索列表问题。 使用此编译器构建失败,因为找不到sys / cdefs.h。我检查了编译器的include搜索路径:

$ gcc -xc -E -v -
<…stripped…>
#include <...> search starts here:
<company specific path>/include
/usr/local/include
<company specific path>/include-fixed
/usr/include
End of search list.

我还使用完全相同的构建选项构建了gcc 5.4.0。此版本的搜索路径如下所示:

$ gcc -xc -E -v -
<…stripped…>
#include <...> search starts here:
<company specific path>/include
<company specific path>/include-fixed
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.

显然不同之处在于/ usr / include / x86_64-linux-gnu仅适用于5.4.0。这是sys / cdefs.h所在的目录。

有没有人有任何指针是什么造成这种差异?我如何构建4.6.3编译器以在包含搜索列表中也有此路径?

我当然知道在使用编译器时我可以用来将这个目录添加到搜索路径的标志和env变量,但我的目标是在编译器“硬编码”中包含这个路径,所以没有额外的-I并且应该使用这样的标志。

我的gcc配置选项是:

configure --prefix=<company specific path>/gcc/4.6.3 --with-arch-32=i686
--with-sysroot=/ --with-multilib-list=m32,m64,mx32 --with-system-zlib
--enable-checking=release --build=x86_64-linux-gnu --enable-multilib 
--enable-languages=c,c++,fortran 
--with-as=<company specific path>/gcc/4.6.3/bin/as 
--with-ld=<company specific path>/gcc/4.6.3/bin/ld 
--with-gnu-as --with-gnu-ld

0 个答案:

没有答案