Linux内核最小编译器,Centos6.5 下交叉编译最小linux kernel之一(工具链)

环境说明:

centos 6.5 mini desktop版本

备注说明:本文是根据《深度探索Linux操作系统构建和原理解析》的笔记

步骤

1. 准备工作环境,首先要建立工作目录和环境变量

在/home/sherlock下建立linux目录

#mkdir source build cross-tool cross-gcc-tmp sysroot

命令vi ~/.bashrc

在.bashrc中添加如下内容

unset LANG

export HOST=i686-pc-linux-gnu

export BUILD=$HOST

export TARGET=i686-none-linux-gnu

export CROSS_TOOL=/home/sherlock/linux/cross-tool

export CROSS_GCC_TMP=/home/sherlock/linux/cross-gcc-tmp

export SYSROOT=/home/sherlock/linux/sysroot

PATH=$CROSS_TOOL/bin:$CROSS_GCC_TMP/bin:/sbin:/usr/sbin:$PATH

2. 构建工具链分5个步骤

1.  构建交叉编译用的汇编和链接器

cd /home/sherlock/linux/build

tar xvf ../source/binutils-2.23.1.tar.bz2

mkdir binutils-build && cd binutils-build

../binutils-2.23.1/configure --prefix=$CROSS_TOOL --target=$TARGET --with-sysroot=$SYSROOT

make

make install

2.  构建没有依赖C库的交叉编译器

cd /home/sherlock/linux/build

tar xvf ../source/gcc-4.7.2.tar.bz2

cd gcc-4.7.2

tar xvf ../../source/gmp-5.0.5.tar.bz2

mv gmp-5.0.5 gmp

tar xvf ../../source/mpfr-3.1.1.tar.bz2

mv mpfr-3.1.1 mpfr

tar xvf ../../mpc-1.0.1.tar.gz

mv mpc-1.0.1 mpc

cd /home/sherlock/linux/build

mkdir gcc-build && gcc-build

一下为配置和编译的命令,需要注意的是mpfr目录的配置,并且需要运行make install

../gcc-4.7.2/configure --prefix=$CROSS_GCC_TMP --target=$TARGET --with-sysroot=$SYSROOT

--with-newlib --enable-languages=c --with-mpfr-include=/home/sherlock/linux/build/gcc-4.7.2/mpfr/src --with-mpfr-lib=/home/sherlock/linux/build/gcc-build/mpfr/src/.libs --disable-shared --disable-threads --disable-decimal-float --disable-libquadmath --disable-libmudflap --disable-libgomp --disable-nls --disable-libssp

3.  安装内核头文件

#cd /home/sherlock/linux/build

#tar xvf ../source/linux-3.7.4.tar.xz

#make mrproper

#make ARCH=i386 headers_check

#make ARCH=i386 INSTALL_HDR_PATH=$SYSROOT/usr/headers_include

这里需要说明的是,如果因为在源码目录没有.config文件

那么你需要从make oldconfig 或者make allnoconfig

然后在运行以上命令

4.  编译目标系统可用的C库

这里需要打上4个补丁,相对于2.15的C库

tar xvf ../source/glibc-2.15.tar.xz

cd glibc-2.15

patch -p1 < ../../source/glibc-2.15-x86-cpuid-check-no-includes-default.patch

patch -p1 < ../../source/glibc-2.14.1-fixed-1.patch

patch -p1 < ../../source/glibc-2.14.1-gcc_fix-1.patch

patch -p1 < ../../source/glibc-2.14.1-sort-1.patch

然后才可以开始编译glibc

#mkdir glibc-build

#cd glibc-build

../glibc-2.15/configure --prefix=/usr --host=$TARGET --enable-kernel=3.7.4 --enable-add-ons --with-header=$SYSROOT/usr/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_ctors_header=yes

#make && make install

编译完成以后头文件安装在 $$SYSROOT/usr/include

共享库文件和符号链接安装在$SYSROOT/usr/lib

5.  构建完整的交叉编译器,用来编译linux kernel

cd /home/sherlock/linux/gcc-build

rm -rf *

../gcc-4.7.2/configure --prefix=$CROSS_TOOL --target=$TARGET --with-sysroot=$SYSROOT --with-mpfr-include=/home/sherlock/linux/build/gcc-4.7.2/mpfr/src --with-mpfr-lib=/home/sherlock/linux/build/gcc-build/mpfr/src/.libs --enable-languages=c,c++ --enable-threads=posix

make && make install

3. 设置工具链的相关环境变量

/root/.bashrc

export CC="$TARGET-gcc"

export CXX="$TARGET-g++"

export AR="$TARGET-ar"

export AS="$TARGET-as"

export RANLIB="$TARGET-ranlib"

export LD="$TARGET-ld"

export STRIP="$TARGET-strip"

相关资源:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值