打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[原创]自己动手制作交叉编译工具链(4)

第三步 编译GCC(第一次)

需要的软件包:
http://oss.ustc.edu.cn/gnu/gcc/gcc-4.4.0/gcc-4.4.0.tar.bz2
http://oss.ustc.edu.cn/gnu/gmp/gmp-4.3.0.tar.bz2http://www.mpfr.org/mpfr-current/mpfr-2.4.1.tar.bz2

编译完成需要时间大概为:1 ~ 1.5小时

软浮点支持

因为要支持软浮点(Soft Float),GCC需要同时编译GMPMPFRGMP是实现任意精度算术运算的软件包,可以完成有符号整数、有理数和浮点数的运算。只要计算机内存的满足需要,GMP的运算精度没有任何限制。MPFR是一个用于高精度浮点运算的C库。让GCC支持GMPMPFR有两种方法,一是分别编译安装GMPMPFR,把路径通过configure告诉GCC,这样在编译GCC的时候就会去找到GMPMPFR;另一种更简单的方法是把GMPMPFR源代码拷贝到GCC源代码目录内,两个文件夹分别命名为gmpmpfr,这样在编译GCC的过程中就会自动去编译GMPMPFR。我们采用第二种方法,下面的命令把GMPMPFR源代码移动到GCC目录内:

  

cd ${SOURCE_DIR}

mv ${PACKAGE_GMP} ${PACKAGE_GCC}/gmp

mv ${PACKAGE_MPFR} ${PACKAGE_GCC}/mpfr

配置选项

第一次编译GCC的作用是生成支持C语言的交叉编译器,目的是用它来交叉编译后面的Glibc库。因为生成完整的GCC交叉编译器需要Glibc库的支持,但是现在还没有用于ARM平台的Glibc库,所以我们先生成一个简化的GCC,用它来编译Glibc,有了Glibc后再重新编译GCC生成完整的ARM-GCC。所以第一次编译GCC的配置选项禁止了很多功能,如下所示:

cd ${BUILD_DIR}/${PACKAGE_GCC}

${SOURCE_DIR}/${PACKAGE_GCC}/configure \

   --build=${HOST} \

   --host=${HOST} \

   --target=${TARGET} \

   --prefix=${RESULT_DIR} \

   --without-headers \

   --with-newlib \

   --with-float=soft \

   --with-cpu=arm920t \

   --with-tune=arm9tdmi \

   --with-gnu-as \

   --with-gnu-ld \

   --disable-nls \

   --disable-decimal-float \

   --disable-libgomp \

   --disable-multilib \

   --disable-libmudflap \

   --disable-libssp \

   --disable-shared \

   --disable-threads \

   --disable-libmudflap \

   --disable-libstdcxx-pch \

   --disable-libffi \

   --enable-languages=c

make && make install || exit 1

选项详解

BUILD= 是指在什么平台上编译源代码,这个肯定是主机了,x86
HOST=  
是指编译出来的可执行文件在什么平台上运行,这个对binutilsgcc来说是 x86, libc来说是
arm
TARGET=
是指用编译出来的交叉编译器编译其它代码生成的可执行文件在什么平台运行, arm

-without-headers

--with-newlib \

   --with-float=soft \

   --with-cpu=arm920t \

   --with-tune=arm9tdmi \

   --with-gnu-as \

   --with-gnu-ld \

--disable-decimal-float \

   --disable-libgomp \

   --disable-multilib \

   --disable-libmudflap \

   --disable-libssp \

   --disable-shared \

   --disable-threads \

   --disable-libmudflap \

   --disable-libstdcxx-pch \

   --disable-libffi \

--disable-shared

Disables the creation of the shared libraries.

--disable-threads

Thiswill prevent GCC from looking for the multi-thread include files, sincethey haven't been created for this architecture yet. GCC will be ableto find the multi-thread information after the Glibc headers arecreated.

--enable-languages=c

This option ensures that only the C compiler is built.

注意: 将这GMPMPFR软件包解压到GCC源码树的根目录下,并分别命名为"gmp""mpfr",那么GCC的编译程序将自动将两者与GCC一起编译。这样做了后,不需要加 --with-gmp with-mpfr 选项,加了反而会出错:configure: error: in `/home/hongwang/mktoolchain/build/gcc-4.4.0/mpfr':
configure: error: Do not use --with-gmp-build and other --with-gmp options simultaneously.
See `config.log' for more details.
make: *** [configure-mpfr]
错误
1

编译和安装的结果: (待完善)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GLIBC库交叉编译
Linux离线(手动)升级GCC
安装交叉编译 GCC
升级Linux系统中的gcc编译器
重走LFS之路:(四) 工具链编译
曲折的gcc升级详细步骤
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服