ttyLinux 源代码编译 armv5交叉编译环境的建立过程
下载ttylinux-src-mp8.tar.bz2, 并解压到/usr/src后得到目录结构如下:
ttylinux-src-mp8
-- ttylinux-src-mp8
-- xbuildtool-0.1
其中的xbuildtool-0.1就是建立交叉环境的工作目录.
cd xbuildtool-0.1然后执行
make setup
生成配置
这样会生成 xbt-build-env.sh和xbt-build-config.sh
接成执行make xxxx, xxx为要生成的目标系统。以armv5tej-2.9-qnueabi为例
发现编译中出现以下问题,并解决
1.下载binutils-2.19.tar.gz2失败,因为网络上的文件不存在,解决办法:
修改scripts/binutils/binutils-versions.sh,修改2.19的URL为:
_BINUTILS_URL[0]="http://mirrors.usc.edu/pub/gnu/binutils .....
2.编译binutils-2.19出现警告性错误unused-but-set-variable,变量定义但没有使用,解决方法:
修改scripts/binutils/binutils-methods.sh,中的make命令行参数增加CPPFLAGS参数如下:
CPPFLAGS=" -Werror -Wno-unused-but-set-variable" || exit 1
3.编译过程中出现一些错误,大致上是因为没有安装相应的包引起的,可以通过查看相应的编译日志查找问题,
编译日志所目录:../cross-tools-2.9-2.6.34.6/armv5tej-2.9-generic-linux-gnueabi
我发现缺少的包如下:
apt-get install gawk
apt-get install autoconf
atp-get install bison
4.编译脚本分析.
核心编译脚本在scripts/build-toolchain.sh,环境变量的脚本为:scripts/xbt-build-env.sh.
其中会先调用xbt_get_file从scripts/xxx/xxx-version.sh中定义的参数中下载相文件。
所有文件下载完成后都保存到pkg-src目录中。
接着对所有文件进行md5检验,检验结果应该和配置中的一致才能继续。
然后分别编译每个包,编译脚本在scripts/xxx/xxx-methods.sh.
编译时的生成的中间文件在build目录下,同时如果源代码中有补丁,会自动调用patches上的相应文件进行更新。
编译后的结果在../cross-tools-2.9-2.6.34.6目录下。
如果编译过程中断,原来的脚本后要求删除编译目录后重新编译,不过也可以手工修改build-toolchain.sh,跳过某一个编译过程,直到编译完成。