环境:VM ubuntu 32 位 14.04 LTS 虚拟机
gcc-4.8.3
1. 下载编译
内核源代码的要求的gcc 版本(README 和 Documents/kbuild/command ),要求gcc 2.95.3 版本
注意该版本不支持x86_64架构,具体的配置编译方法,可以参考源码下的INSTALL 目录
-
下载: gcc 2.95.3
地址 -
补丁下载
http://www.linuxfromscratch.org/patches/blfs/5.1/gcc-2.95.3-2.patch
http://www.linuxfromscratch.org/patches/blfs/5.1/gcc-2.95.3-no-fixinc.patch
http://www.linuxfromscratch.org/patches/blfs/5.1/gcc-2.95.3-returntype-fix.patch -
打补丁
patch -Np1 -i …/gcc-2.95.3-2.patch &&
patch -Np1 -i …/gcc-2.95.3-no-fixinc.patch &&
patch -Np1 -i …/gcc-2.95.3-returntype-fix.patch
2. configure
$ mkdir gcc-built //编译的目标所在目录
$ cd gcc-built
$…/gcc-2.95.3/configure
–prefix=/opt/gcc-2.95.3
–enable-shared --enable-languages=c,c++
–enable-threads=posix
配置完成如下:
3. build
按照build.html 是使用make bootstrap ,出错,并且看不出错误,只好先make 看能否成功
bug 1 open函数参数问题
$make // gcc-built 目录下,还是报错,
因为使用 open 函数的时候,如果在第二个参数中使用了 O_CREAT,就必须添加第三个参数:创建文件时赋予的初始权限
找到源码中报 open 错误的位置,改为:
open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777);
问题解决,也就是加了 ”0777“ 这个参数。
bug2 头文件问题:如下
如下添加头文件路径,删除gcc-build 下所有文件,重新configure ,再make
bug3
这个还未解决,最后换成 deb 安装2.95.4
参考:
1.http://www.linuxfromscratch.org/blfs/view/5.1/general/gcc2.html
2.https://blog.csdn.net/subfate/article/details/6277967