Centos6.5 下交叉编译最小linux kernel之一(工具链)
来源:互联网 发布:软件商店开发 编辑:程序博客网 时间:2024/04/28 06:19
环境说明:
centos 6.5 mini desktop版本
备注说明:本文是根据《深度探索Linux操作系统构建和原理解析》的笔记
步骤
1. 准备工作环境,首先要建立工作目录和环境变量
在/home/sherlock下建立linux目录
#mkdir source build cross-tool cross-gcc-tmp sysroot
命令vi ~/.bashrc
在.bashrc中添加如下内容
unset LANGexport HOST=i686-pc-linux-gnuexport BUILD=$HOSTexport TARGET=i686-none-linux-gnuexport CROSS_TOOL=/home/sherlock/linux/cross-toolexport CROSS_GCC_TMP=/home/sherlock/linux/cross-gcc-tmpexport SYSROOT=/home/sherlock/linux/sysrootPATH=$CROSS_TOOL/bin:$CROSS_GCC_TMP/bin:/sbin:/usr/sbin:$PATH
2. 构建工具链分5个步骤
1. 构建交叉编译用的汇编和链接器
cd /home/sherlock/linux/buildtar xvf ../source/binutils-2.23.1.tar.bz2mkdir binutils-build && cd binutils-build../binutils-2.23.1/configure --prefix=$CROSS_TOOL --target=$TARGET --with-sysroot=$SYSROOTmake make install
2. 构建没有依赖C库的交叉编译器
cd /home/sherlock/linux/buildtar xvf ../source/gcc-4.7.2.tar.bz2cd gcc-4.7.2tar xvf ../../source/gmp-5.0.5.tar.bz2mv gmp-5.0.5 gmptar xvf ../../source/mpfr-3.1.1.tar.bz2mv mpfr-3.1.1 mpfrtar xvf ../../mpc-1.0.1.tar.gzmv mpc-1.0.1 mpccd /home/sherlock/linux/buildmkdir 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.xzcd glibc-2.15patch -p1 < ../../source/glibc-2.15-x86-cpuid-check-no-includes-default.patchpatch -p1 < ../../source/glibc-2.14.1-fixed-1.patchpatch -p1 < ../../source/glibc-2.14.1-gcc_fix-1.patchpatch -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-buildrm -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=posixmake && 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"
相关资源:
glibc-patch补丁
深度探索Linux操作系统:系统构建和原理解析 :链接: http://pan.baidu.com/s/1c23grfU 密码: 6d8w
0 0
- Centos6.5 下交叉编译最小linux kernel之一(工具链)
- Linux kernel 2.6 交叉编译工具链
- Linux kernel 2.6 交叉编译工具链
- Linux kernel 2.6 交叉编译工具链
- Linux kernel 2.6 交叉编译工具链
- centos6.5 64位 交叉编译工具链搭建
- Linux kernel交叉编译
- Linux平台下ARM-Linux交叉编译工具链
- linux kernel 编译工具链
- linux下arm交叉编译工具链的安装
- linux下交叉编译工具链的安装
- Linux 下安装 Blackfin 交叉编译工具链
- linux下各种交叉编译工具
- Linux下安装gcc交叉编译工具
- Linux下交叉编译工具的安装
- ubuntu下编译交叉编译工具链
- Linux交叉编译工具
- ubuntu下安装交叉编译工具链
- 返回的cursor师指向第一条之前的,moveToFirst和moveToNext都是指向cursor的第一条数据
- 高次方程问题总结
- C/C++ 关于float和double类型与二进制的转换实现。。
- AutoCompleteTextView自动提示输入框问题
- 如何用nat123创建一个web服务器以达到外网访问内网的目的。
- Centos6.5 下交叉编译最小linux kernel之一(工具链)
- 如何在Xcode8上安装插件
- 使用Hive遇到的错误
- ViewPager+RadioGroup 实现网络加载图片的轮播
- 基于zookeeper的分布式锁实现
- JavaScript中的while和do while循环
- 学习笔记--了解Scroller
- 深入Android MediaPlayer的使用方法详解
- C语言fgets读取整个文本文件的内容