没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
1、什么是 crosstool-ng
crosstool-ng 全称是 crosstool Next Generation 即下一代 crosstool 即 crosstool 的升
级版。那么什么是 crosstool 呢?crosstool 是个交叉编译器的制作工具。交叉编译器简单的
说可以理解为在 X86 电脑上编译 ARM 的运行程序。更详细的介绍可以参考《构建嵌入式 LINUX
系统》的第四章。
crosstool-ng 的使用的基本逻辑
在使用 crosstool-ng 之前,实际上要明白两个概念,不要混淆了:
下载、编译、安装 crosstool-ng 工具本身(到当前的 Linux,Cygwin 等系统中,供后续使用)
crosstool-ng 作为一个工具,尤其是在 Linux 领域里,很明显,也有对应的源码包,即:也需要
通过下载对应的源码,去编译源码,然后再安装到当前的系统中。其整体的逻辑和下载、编译、安装
别的 Linux 下的软件包没有啥特殊区别。
Linux 下安装第三方工具的基本逻辑
Linux 的世界中,使用某个工具软件,和 Windows 下,不太一样更多的时候,是自己从源
码中编译并安装。
所以,需要自己找到自己要的源码包,即下载,然后去配置,再去编译和安装。
即:下载,配置,编译,安装
在安装了 crosstool-ng 这个工具后,就可以去使用 ct-ng 了。
然后才是去配置和编译,以便制作出对应的相应的交叉编译器。即,用 crosstool-ng 这个制作交
叉编译器的工具,去制作交叉编译器。基本步骤包括:
即,为了你要制作的交叉编译器,去配置各种参数。
比如 CPU 是 arm 还是 mips 还是其他,运行目标平台是 Linux 还是 bare metal,所用的 C 库是 elibc
还是 glibc 还是 uclibc 等的配置。
2
选用合适的配置,一般的做法,主要有两种:
对应的命令一般是:
ct-ng some_default_config //直接利用已有的配置
ct-ng menuconfig //自行配置
等所有的配置都完毕后,就可以去编译,生成你所需要的交叉编译器了。对应的命令一般是:
ct-ng build
2、制作交叉编译工具链的步骤
a、从 http://crosstool-ng.org/download/crosstool-ng/下载相应版本的 crosstool-ng
工具,我下载的版本是 crosstool-ng-1.20.0.tar.bz2。若有补丁也需要同时下载,网址为
http://crosstool-ng.org/download/crosstool-ng/01-fixes/。
b、解压 crosstool-ng-1.20.0.tar.bz2。
命令为 tar xjf crosstool-ng-1.20.0.tar.bz2。解压后得到一个名为
crosstool-ng-1.20.0 的文件夹。输入命令 cd crosstool-ng-1.20.0 进入文件夹,如果有兴
趣可以看下 README 文件,它会教你一步步制作交叉编译工具链。另外 doc 文件夹下有详细的
制作步骤可以参考。
c、配置、编译安装 crosstool-ng-1.20.0。步骤:进入 crosstool-ng-1.20.0 文件夹,
执行./configure --prefix=/work/tools/crosstool-ng 命令配置 crosstool-ng-1.20.0,
/work/tools/crosstool-ng 为 crosstool-ng-1.20.0 的安装路径。
若配置过程中出现错误,一般是缺少某个程序造成的,缺什么安装什么就可以了。一般需
要安装的程序为
sudo apt-get install sed bash cut dpkg-dev bison flex patch texinfo automake m4
libtool stat cvs websvn tar gzip bzip2 lzma readlink libncurses5-dev bison flex texinfo
automake libtool patch gcj cvs cvsd gawk。配置成功后执行 make 命令编译,然后 make
install 进行安装。
3
如果后面出现编译错误,再增加相应的包即可。安装完成后可以执行 export
PATH=$PATH:/work/tools/crosstool-ng/bin。把 ct-ng 命令放到环境变量中,这样就可以在
任何地方执行 ct-ng 了。为了测试是否安装成功可以输入 ct-ng --help 命令测试。就出现相
应的说明就说明安装成功了。
d、配置工具链选项。步骤:将 crosstool-ng 源码包中
samples/arm-unknown-linux-gnueabi/下的 crosstool.config 拷贝到源码包主目录下,在源
码包主目录下执行 cp samples/arm-unknown-linux-gnueabi/crosstool.config .config;然后
执行:ct-ng menuconfig 可以看到如下的配置画面
源码包下载保存路径
Paths and misc options
(${HOME}/arm/src) Local tarballs directory
工作路径
一般使用默认配置
Paths and misc options
(${CT_TOP_DIR}/.build) Working directory
目标安装路径
Paths and misc options
(${HOME}/arm/x-tools/${CT_TARGET}) Prefix directory
问题解决:
4
需要注意的是本人在使用 apt-get 命令安装 libtool 库的时候,提示已经安装好,但是 configure 时还是
提示没有,此时同时下载 libtool 库离线安装解决此问题。安装好 crosstool-ng 会在/usr/local 对应的目
录下。
[ERROR] linux: download failed
[ERROR] >>
[ERROR] >> Build failed in step 'Retrieving needed toolchain components' tarballs'
[ERROR] >> called in step '(top-level)'
[ERROR] >>
wget http://mirrors.aliyun.com/linux-kernel/v4.x/linux-4.20.8.tar.xz
以上问题的原因是下载这些 tar 包慢的问题,可使用其他快速下载链接。
3.1.2. 用 ct-ng list-steps 查看本身的 build 过程分成哪几步
如上所述,用 list-steps,可以查看到,当前,用 crosstool-ng 去 build,去制作交叉编译器,具体分成
哪些步骤:
CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build
$ ct-ng list-steps
Available build steps, in order:
- libc_check_config
- companion_libs_for_build
- binutils_for_build
- companion_libs_for_host
- binutils_for_host
- cc_core_pass_1
- kernel_headers
- libc_start_files
- cc_core_pass_2
- libc
- cc_for_build
- cc_for_host
- libelf_for_target
- binutils_for_target
- debug
- test_suite
- finish
Use "<step>" as action to execute only that step.
Use "+<step>" as action to execute up to that step.
Use "<step>+" as action to execute from that step onward.
5
知道了,此处分了多少步骤,具体有哪些步骤之后,后面才有可能去实现,从之前出错的哪一步,恢
复,继续编译。
3.1.3. 用 ct-ng list-samples 查看当前已包含哪些默认的示例配置
如第 3.1.1 节 “用 ct-ng help 查看所拥有的功能”中所述,我们可以通过
ct-ng list-samples
查看到,当前 crosstool-ng 中,已经有了哪些默认的,帮我们配置好的哪些配置:
CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0
$ ct-ng list-samples
Status Sample name
MKDIR config.gen
IN config.gen/arch.in
IN config.gen/kernel.in
IN config.gen/cc.in
IN config.gen/binutils.in
IN config.gen/libc.in
IN config.gen/debug.in
[L.X] alphaev56-unknown-linux-gnu
[L.X] alphaev67-unknown-linux-gnu
[L.X] arm-bare_newlib_cortex_m3_nommu-eabi
[L.X] arm-cortex_a15-linux-gnueabi
[L..] arm-cortex_a8-linux-gnueabi
[L..] arm-davinci-linux-gnueabi
[L..] armeb-unknown-eabi
[L.X] armeb-unknown-linux-gnueabi
[L.X] armeb-unknown-linux-uclibcgnueabi
[L..] arm-unknown-eabi
[L..] arm-unknown-linux-gnueabi
[L.X] arm-unknown-linux-uclibcgnueabi
[L.X] armv6-rpi-linux-gnueabi
[L.X] avr32-unknown-none
[L..] bfin-unknown-linux-uclibc
[L..] i586-geode-linux-uclibc
[L.X] i586-mingw32msvc,i686-none-linux-gnu
[L.X] i686-nptl-linux-gnu
[L.X] i686-unknown-mingw32
[L.X] m68k-unknown-elf
[L.X] m68k-unknown-uclinux-uclibc
[L.X] mips64el-n32-linux-uclibc
[L.X] mips64el-n64-linux-uclibc
[L.X] mips-ar2315-linux-gnu
[L..] mipsel-sde-elf
[L..] mipsel-unknown-linux-gnu
剩余34页未读,继续阅读
资源评论
yuexiaoyu518
- 粉丝: 0
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功