设为首页 加入收藏

TOP

GCC 4.5.1交叉编译器构建过程
2014-11-24 07:48:46 来源: 作者: 【 】 浏览:1
Tags:GCC 4.5.1 交叉 编译器 构建 过程

1、下载地址:http://ftp.gnu.org/gnu/


下载内容:gcc,binutils,glibc


2、步骤:1)binutils


2)最小化交叉编译gcc


3)linux kernel headers


4)glibc


5)最终版gcc


3、由于binutils最新版的(2.21)需要mpc、gmp和mpfr,但是不需要交叉编译,所以直接安装x86的就行。


binutils的configure参数只需要设置target为arm-linux就可以,其他禁用选项没有必要


4、最小化编译gcc时需要去除对宿主机lib的依赖,禁用shared、threads。另外还须禁用libmudflap、multilib、libssp、libgomp、libiberty(除第一个选项外都是在arm编译条件无法通过的选项),


configure参数设置为:--target=arm-none-linux-gnueabi --disable-shared --disable-threads --without-heades --disable-libmudflap --enable-languages=c


先make all-gcc all-install之后make all-target-libgcc install-target-libgcc。因为libgcc对gcc的依赖需要先安装好gcc再编译libgcc。


6、glibc的nptl的pthread需要检测unwind,c cleanup handling,gnu89 line可能没有,将相应的configure检测内容强制为成功。


gnu89 line选项如果在configure时没有设置可能会通过,但是make时会出错。CFLAGS += -fno-stack-protector也可以添加gnu89-line选项


因为没有config-name.h文件,自己根据uname -a的结果建立一个。


manmul的makefile文件有点小问题,把提示错误的隐含规则行单独出来处理。


为lowlevellock.h添加


将elf的makefile文件的关于_begin的sed语句的0替换为.*


sysdeps/arm/fpu/setjmp.S文件末尾添加hidden_def(__sigsetjmp)


8、编译最终版gcc


configure参数设置为:--target=arm-none-linux-gnueabi --enable-shared --enable-threads --enable-nls --enable-languages=c,c++


关于nls的支持,禁用与不禁用似乎没有什么差别,一般都会禁用。


注:加粗的一般是必须要做的,其他的可能根据环境不同有所差别。


问题一般会出在glibc的编译过程,其他都还比较顺利。


arm-none-linux-gnueabi与arm-linux区别是否提供eabi支持,针对于mini6410开发板提供的系统是需要eabi支持的否则会报段错误。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux fork函数创建一个新进程 下一篇Linux下YAFFS2 移植步骤

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)