设为首页 加入收藏

TOP

自己动手制作交叉编译工具链
2014-11-24 12:00:21 来源: 作者: 【 】 浏览:0
Tags:自己 动手 制作 交叉 编译 工具

准备工作


这个过程其实是很简单的。 之所以经常会失败, 大部分都是因为configure时使用的配置选项不正确导致编译出错。所以,出错时最好的解决办法是根据提示,把相关配置选项的真正含义搞明白,然后再做取舍;如果一味地去网上搜索别人的办法,即使解决了错误,自己也还是知其然而不知其所以然。


使用的软件包版本:Binutils-2.19.1; GCC-4.4.0; Glibc-2.9; Linux-2.6.29; gmp-4.3.0; mpfr-2.4.1; 所需的软件包大都可以从中国科技大学的镜像服务器上下载:http://oss.ustc.edu.cn, 教育网内速度应该是很快的。


工作目录结构:


package 存放下载到的原始文件压缩包


patch 存放一些补丁文件


source 存放解压缩后的源代码,


build 存放编译过程中生成的所有文件,不在源代码目录下编译是为了避免对源代码文件夹造成影响


result 存放编译后生成的最终结果放在此处


几个环境变量:


PACKAGE_DIR=${PWD}/package


BUILD_DIR=${PWD}/build


PATCH_DIR=${PWD}/patch


RESULT_DIR=${PWD}/result


SOURCE_DIR=${PWD}/source


TARGET_PREFIX=${RESULT_DIR}/${TARGET}


HOST=i686-pc-linux-gnu


TARGET=arm-hwlee-linux-gnueabi


注意这里的arm-*-linux-gnueabi,(中间的星号部分是任意的),这种写法是固定格式的,可以在Binutils软件包的README文件里找到格式说明。其中gnueabi表示创建的交叉编译器支持EABI。


什么是EABI?简单的说,就是C/C++源代码编译成汇编码的约定,如符号表的生成,全局变量的初始化等。我们可以把ABI理解为一套规则,这套规则一般包括定义了以下内容: 1.应用程序如何发出系统调用来trap到内核态。 2.如何使用机器的寄存器。比如,RISC处理器的ABI就要规定用那个通用寄存器来作stack pointer和frame pointer。3.规定如何进行procedure call。这是从网上找来的别人的介绍,等我把它搞透彻了再通过一些实验来具体说明。


使用shell脚本自动创建目录、下载软件包、自动解压和打补丁, 本文中所叙述的所有步骤都写在Shell脚本中。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何为嵌入式开发建立交叉编译环境 下一篇Fedora下 DirectFB 开发手记

评论

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

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)