Changchun Master Li

为 OS X 构建原生 x86 交叉编译工具链

2018-05-15

homebrew-core 没有 x86 的交叉编译工具,所以只好自己糊一个。

预备

首先,确定一个安装的目录

1
export PREFIX="/opt/cross-tools"

然后,确定目标三元组 (machine-vendor-operatingsystem
),省略操作系统

1
export TARGET="i686-elf"

编译 binutils

1
2
3
4
5
6
7
8
$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2
$ tar jxvf binutils-2.24.tar.bz2
$ cd binutils-2.24
$ mkdir -v ../binutils-build
$ cd ../binutils-build
$ ../binutils-2.24/configure --prefix=${PREFIX} --target=${TARGET} --disable-nls --elfdisable-static --disable-multilib --disable-werror
$ make
$ make install

编译 gcc

1
2
3
4
5
6
7
8
$ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.3/gcc-4.8.3.tar.bz2
$ tar jxvf gcc-4.8.3.tar.bz2
$ cd gcc-4.8.3
$ mkdir -v ../gcc-build
$ cd ../gcc-build
$ ../gcc-4.8.3/configure --prefix=${PREFIX} --target=${TARGET} --disable-nls --enable-languages=c --without-headers --disable-multilib
$ make all-gcc all-target-libgcc
$ make install-gcc install-target-libgcc

参数含义在
https://gcc.gnu.org/install/configure.html

因为没有编 glibc ,所以实现 main 函数入口会报错

1
ld: cannot find crt0.o: No such file or directory

reference

重度参考了

clfs

osdev

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章