linux下构建gcc交叉编译器全记录

linux下构建gcc交叉编译器全记录

ID:8820546

大小:38.50 KB

页数:5页

时间:2018-04-08

linux下构建gcc交叉编译器全记录_第1页
linux下构建gcc交叉编译器全记录_第2页
linux下构建gcc交叉编译器全记录_第3页
linux下构建gcc交叉编译器全记录_第4页
linux下构建gcc交叉编译器全记录_第5页
资源描述:

《linux下构建gcc交叉编译器全记录》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux下构建GCC交叉编译器全记录2010-12-1521:18〇、缘起前不久做了个DamnSmallLinux启动U盘,感觉很实用。美中不足是根文件系统一直是初始RAM盘,不能按需修改;要把DSL安装到U盘又需要200M空间,我的U盘只有128M。一怒之下,决定自己做一个LFS(LinuxFromScratch),开源精神不是支持自己动手么。计划是构建一个兼容i586(Pentium,Celeron)以上架构的小型系统,完全包含在U盘里。我所用的机器是x86_64架构,因此LFS的第一步是构建一个到

2、i586的交叉编译器。Cross-CompileLinuxFromScratch是关于交叉编译Linux的详尽文档,开头包括了构建交叉编译器的详细介绍。但是所用的源代码版本有些已颇旧,而且步骤也略嫌繁琐,我决定用新版本的源代码自己探索一下。 一、准备编译环境构建过程运行在Fedora14Linux上,CPUIntelCore2Duo,内核版本2.6.35.9(x86_64)。要编译交叉编译器首先需要一个编译器,这里就是GCC(4.5.1)。另外,编译GCC还需要MPFR、GMP、MPC三个库,安装之。当然

3、一干构建工具如make、autoconf等是不可或缺的,就不赘述了。为了构建过程清晰,源代码和目标文件尽量分开放置,因此在用户目录下创建目录src放置源代码,cross-build放置目标代码。mkdir~/srcmkdir~/cross-build我准备把交叉编译器安装到/usr/local目录下,为简化配置命令,创建一个脚本~/cross-build/setenv设置环境变量,内容如下:PREFIX=/usr/localPATH=${PREFIX}/bin:/bin:/usr/binTOOLS=`pw

4、d`/toolsHOST=$MACHTYPETARGET=i586-linux如果构建工作中途停止,关机重启,或者其他干扰,继续之前先运行此脚本重设环境。cd~/cross-build.setenv 二、下载源代码需要下载Binutils、GCC、Glibc的源代码,源代码包位于GNU的FTP(ftp://ftp.gnu.org/)上。这里下载的是Binutils2.21、GCC4.5.1和Glibc2.11.3。因为我的目标平台是Linux,编译Glibc还需要Linux的源代码,可以从http://w

5、ww.kernel.org/获取。wgetftp://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.bz2wgetftp://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2wgetftp://ftp.gnu.org/gnu/glibc/glibc-2.11.3.tar.bz2wgethttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.2.tar.bz2 三、

6、编译Binutils整个构建过程分四大步,依次为Binutils,静态GCC,Glibc,最终(带Glibc的)GCC,后面的工作依赖于前面的结果。Binutils包含交叉编译器必需的汇编器、链接器、archiver(打包器?)和其他各种工具。首先解压源代码到~/src。tarxjfbinutils-2.21.tar.bz2-C~/src在~/cross-build目录下为Binutils目标文件创建一个目录,然后切换到该目录。mkdir~/cross-build/binutilscd~/cross-bu

7、ild/binutils配置为交叉编译,--target指明编译出来的工具可以处理的体系结构,而不是它们将要运行在的体系结构。这里构建的是交叉编译器,编译器的运行环境(宿主host)和目标程序的运行环境(目标机target)是不同的,但是编译交叉编译器的工具的运行环境(build)和宿主是一样的(至少这里是)。~/src/binutils-2.21/configure--prefix=$PREFIX--target=$TARGET--disable-nlsmake-j22>&1

8、teemake.out-j

9、2选项使GNUmake并行编译,2>&1把错误输出重定向到标准输出,然后用tee存入文件make.out。sudomake-j2install四、编译静态GCC一个完整的交叉编译器必须带有标准C库,这里选择Glibc,而为了编译Glibc,又必须先有一个交叉编译器。解决的办法是先编译一个受限的、不带C库的交叉编译器,然后用它来编译Glibc,最后再携同Glibc一齐编译完整的交叉编译器。这一步就是编译一个受限的GCC,称为静态

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。