在 Mac OS X 10.9 Mavericks 上源码安装 crosstool-ng

  2013-12-05 00:00:00 CST

  Jingwen Peng

  Mac

CTNG

获得交叉工具链有两种方法,自己编译或者直接下载编译好的。 crosstool-ng 是一个交叉编译链的制作工具,在 Linux 环境下安装,很容易,分分钟的事情,但是在 Mac OS X 上安装就比较痛苦了。 下面说说 crosstool-ng 是什么东西,在 OS X Mavericks 上怎么源码安装。


简介

crosstool-ng,全称是 crosstool next generation,这个应该能一眼猜出来,ng 明摆着就是下一代的意思。

既然是 crosstool-ng,即“下一代 crosstool”,那么一定有 crosstool。crosstool-ng 是作者 Yann E. MORIN,在 Dan Kegel 写的 crosstool 的基础上,做了全新的升级。目的是让制作交叉工具链更便捷,让制作交叉工具链的工具更为好用。

crosstool-ng 特点

  1. 支持类似 Linux Kernel 配置时 menuconfig 形式的配置。
  2. 支持越来越多的架构,持续和足够的维护
  3. 支持 Linux 和 bare metal 两种运行环境
  4. 支持不同线程模型
  5. 支持软浮点和硬件浮点
  6. 提供示例配置
  7. 支持多种主机编译环境

crosstool-ng 大致使用流程

  1. 下载编译安装
  2. 找到类似的配置文件,ct-ng SAMPLE_CONFIG
  3. 进行配置,ct-ng menuconfig
  4. 制作工具,ct-ng build

安装

下面说说具体的安装过程。

操作系统:Mac OS X 10.9 Mavericks (Build 13A603) 开发工具:Xcode 5.0.2 (command-line tools installed) 根工作路径:/usr/local/cross-tools/ 资源文件存放路径:/usr/local/cross-tools/src/ 环境变量:export PATH="/usr/local/cross-tools/bin:$PATH"

下载 crosstool-ng

去官网下载页面下载最新的 tarball,http://crosstool-ng.org/download/crosstool-ng

目前最新的是 crosstool-ng-1.19.0.tar.bz2 解压

1
2
$ tar -xvf crosstool-ng-1.19.0.tar.bz2
$ cd crosstool-ng-1.19.0

配置

1
2
3
$ ./configure --prefix=/usr/local/cross-tools
...
checking whether sed understands -r -i -e... no

这个时候是会报错的,Mac OS X 的 sed 版本太老了。不只是 sed 的版本太老了,还有一些其他的工具都不符合 crosstool-ng 的要求,现在开始着手安装 gnu 的工具包。

安装 GNU 工具包

既然 Mac 自带的工具太老了,那就给它换一套新的。以下 tarball 在 gnu 的官网都能找到,就不贴下载地址了,另外下面用到的包是目前最新的 (也许明天就会又发布新版了)。

sed 4.2

1
2
3
4
5
tar -xvf sed-4.2.tar
cd sed-4.2
./configure --prefix=/usr/local/cross-tools
make -j 4 #(根据自己的CPU设置)
make install

现在查看版本 sed --version,显示 GNU sed version 4.2,sed 已满足要求。

coreutils 8.9

1
2
3
4
5
tar -xvf coreutils-8.9.tar.xz
cd coreutils-8.9
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

GNU 的 ls 和 Mac 自带的 ls 当然是不一样的。平时为了让 ls 显示色彩,设定了别名 alias ls="ls -G",-G 参数在 Mac 的 ls 中是显示颜色;而到了 GNU 显示颜色是 --color=always。coreutils 包含了大部分如 ls、mv、cp 等常用命令。

make 4.0

1
2
3
4
5
tar -xvf make-4.0.tar
cd make-4.0
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

libtools 4.0

1
2
3
4
5
tar -xvf libtool-2.4.tar.xz
cd libtool-2.4
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

gcc 4.8.2

1
2
3
4
5
6
7
8
9
10
11
tar -xvf gcc-4.8.2.tar
unzip mpfr-3.1.2.zip
mv mpfr-3.1.2 gcc-4.8.2/mpfr
tar -xvf mpc-1.0.1.tar
mv mpc-1.0.1 gcc-4.8.2/mpc
tar -xvf gmp-5.1.3.tar.xz
mv gmp-5.1.3 gcc-4.8.2/gmp
cd gcc-4.8.2
./configure --prefix=/usr/local/cross-tools --enable-all-language
make -j 4
make install

Mac 自带的是 clang,gcc、g++、c++、cc 都是指向 clang 的软链接。这步不可以跳过,用 gnu 的工具包,怎么能少得了 gcc 呢,强迫症装一下。还有一个重要原因,crosstool-ng 需要 gcj,这个 Mac 是不自带的,需要手动编译 GCC 进行安装的。

gawk 4.1.0

1
2
3
4
5
tar -xvf gawk-4.1.0.tar.xz
cd gawk-4.1.0
./configure --prefix=/usr/local/cross-tools --without-readline --without-mpfr --without-libsigsegv-prefix
make -j 4
make install

binutils 2.23.2

1
2
3
4
5
tar -xvf binutils-2.23.2.tar
cd binutils-2.23.2
./configure --prefix=/usr/local/cross-tools --enable-werror=no
make -j 4
make install

gperf 3.0.4

1
2
3
4
5
tar -xvf gperf-3.0.4.tar
cd gperf-3.0.4
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

wget 1.9

1
2
3
4
5
tar -xvf wget-1.9.tar
cd wget-1.9
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

autoconf 2.69

1
2
3
4
5
tar -xvf autoconf-2.69.tar.xz
cd autoconf-2.69
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

wget 1.9

1
2
3
4
5
tar -xvf automake-1.14.tar.xz
cd automake-1.14
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

安装 crosstool-ng

crosstool-ng 1.19.0

1
2
3
4
5
tar -xvf crosstool-ng-1.19.0.tar.bz
cd crosstool-ng-1.19.0
./configure --prefix=/usr/local/cross-tools
make -j 4
make install

至此 crosstool-ng 安装完成。 最后别忘了把 ct-ng.comp 复制到 bash_completion.d,如果你装了 bash-completion 的话。

CTNG-Build

如果您有疑问或建议,请在下方评论区域留言

遵循 BY-NC-ND 协议

评论功能加载中...