编译gcc-4.7.2时出错
我正在尝试使用gcc-4.6.1从源代码编译gcc-4.7.2 首先,我运行contrib/download\u先决条件下载所需的包,然后按照LFS上的说明进行操作 运行编译gcc-4.7.2时出错,gcc,Gcc,我正在尝试使用gcc-4.6.1从源代码编译gcc-4.7.2 首先,我运行contrib/download\u先决条件下载所需的包,然后按照LFS上的说明进行操作 运行make bootstrap时,我收到错误消息: In file included from ../../gcc-4.7.2/gcc/c-lang.c:24:0: ../../gcc-4.7.2/gcc/system.h:499:20: error: conflicting types for ‘strsignal’ /usr/
make bootstrap
时,我收到错误消息:
In file included from ../../gcc-4.7.2/gcc/c-lang.c:24:0:
../../gcc-4.7.2/gcc/system.h:499:20: error: conflicting types for ‘strsignal’
/usr/include/string.h:566:14: note: previous declaration of ‘strsignal’ was here
我的情况与此处发布的情况相同:。原因也是一样的:gcc找到了错误的config.h
,它应该是当前目录中的一个,但实际上它使用了gmp
下的一个
我发现原因是,尽管命令行在所有其他-I
选项之前指定了-I.
,但是-I.
被忽略,因为它已经在标准搜索路径中。下面是我通过运行gcc-v
得到的消息:
ignoring duplicate directory "."
as it is a non-system directory that duplicates a system directory
以下是与此问题()相关的路径搜索顺序:
唯一的例外是默认情况下已搜索目录。在这种情况下,该选项被忽略,系统目录的搜索顺序保持不变
如何使gcc在-I
选项指定的其他路径之前搜索当前目录
产生错误消息的命令是:
gcc -c -DIN_GCC_FRONTEND -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -I. -I. -I../../gcc-4.7.2/gcc -I../../gcc-4.7.2/gcc/. -I../../gcc-4.7.2/gcc/../include -I../../gcc-4.7.2/gcc/../libcpp/include -I/home/dwang/Downloads/gcc-build/./gmp -I/home/dwang/Downloads/gcc-4.7.2/gmp -I/home/dwang/Downloads/gcc-build/./mpfr -I/home/dwang/Downloads/gcc-4.7.2/mpfr -I/home/dwang/Downloads/gcc-4.7.2/mpc/src -I../../gcc-4.7.2/gcc/../libdecnumber -I../../gcc-4.7.2/gcc/../libdecnumber/bid -I../libdecnumber ../../gcc-4.7.2/gcc/c-lang.c -o c-lang.o
谢谢。在我的
~/.bashrc
中,这是一个非常有线的配置问题。我曾向bashrc添加以下行:
export C_INCLUDE_PATH=/home/dwang/local/include:/export/scratch/packages/include/:$C_INCLUDE_PATH
echo$C_INCLUDE_PATH
的输出为:
/home/dwang/local/include:/export/scratch/packages/include/:
结果是,如果在C_INCLUDE_路径中有一个尾随:
,那么也会添加
。如果删除尾随的:
,则一切正常
原因记录如下:
在所有这些变量中,一个空元素指示编译器搜索其当前工作目录。空元素可以出现在路径的开头或结尾。例如,如果CPATH的值为:/special/include,则其效果与“-I.-I/special/include”相同