用的是ubuntu 12.04 在编译gcc-4.6.2时候跳出提示:error: gnu/stubs-32.h: No such file or directory
经过查询,/usr/include/gnu/ 的目录下只有stubs-64.h:
再分析stubs.h:
/* This file selects the right generated file of `__stub_FUNCTION' macros
based on the architecture being compiled for. */
#include <bits/wordsize.h>
#if __WORDSIZE == 32
# include <gnu/stubs-32.h>
#elif __WORDSIZE == 64
# include <gnu/stubs-64.h>
#else
# error "unexpected value for __WORDSIZE macro"
#endif
因为系统是32位的,因此头文件会去寻找stubs-32.h
因此这个报错的原因就是因为找不到32位的gcc库
根据国外友人的回答:
发现这个问题是由两个原因造成的:
1、64位的ubuntu缺少32位的库
2、ubuntu 12.04中由于bug会将编译形成的文件放入一个非标准的位置,使得之后依赖于此的文件找不到之前的编译项
显然我的问题是由于第二个原因导致的,因此解决方法如下:
在编译之前进入需要编译的目录,重新设置环境变量:
export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)
export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
然后重新configure,make ,make install