9g45交叉编译工具链的编译

2019-07-12 23:09发布

9g45交叉编译工具链的编译

前两天手残,在编译服务器敲错了命令: rm /home 好吧,这下子误删了好多东西,不光是代码,连编译环境都出了问题。用“extundelete”也没能恢复过来,血的教训啊。没办法,只能重新弄个编译环境,同时在此做个记录,下回好少走弯路。

1. 重新编译交叉编译链的原由

由于项目里面使用了libuv 1.8这个库(一时脑热入的坑),之前一直在Windows下调试。后来移植到开发板上的时候发现之前的编译器的glibc版本太低了始终不能通过编译。而libuv需要glibc >= 2.12,所以只能重新编译工具链了。

2.下载buildroot

选用了buildroot-2014.02这个版本。为何不选用最新的?因为板子上的内核是2.6.30,试过最新的版本,已经不支持这么低的内核配置了。所以要么再升级kernel,要么选低版本的buildroot。我选了比较省事的一条路径(可以说我懒),降级用了buildroot-2014.02这个版本。下载后解压进入目录。

3.配置buildroot

输入下面命令,进行配置: # make menuconfig 下面是主要配置,其他默认就行。

3.1 Target options

进入Target options,进行如下选择:
Target Architecture —>ARM(little endian);
Target Architecture Variant —>arm926t;
Target ABI —>EABI;
其他默认;

3.2 Toolchain

进入Toolchain,进行如下选择:
Kernel Headers—>Manually specified Linux version,内核版本选择手动指定,然后在下面的linux version 中填入2.6.30;
C library —>glibc,不能选uClibc和eglibc;
GCC compiler Version —>gcc 4.7.x;
[*] Enable C++ support
[*] Build cross gdb for the host
GDB debugger Version (gdb 7.5.x)
其他默认;

4. 生成交叉编译工具链

进行编译,期间会自动连通网络下载相应压缩包。 make 如果没有错误,生成的编译工具就在目录的output/host/usr/下面。
拷贝出来: cp -ra output/host/usr/* /opt/arm-toolchain-4.7.x

5. 配置环境

编辑环境脚本: vi /etc/profile 然后在最后面加上: export PATH=${PATH}:/opt/arm-toolchain-4.7.x/bin 验证下: /opt/buildroot-2014.02# arm-buildroot-linux-gnueabi-gcc -v 使用内建 specs。 COLLECT_GCC=arm-buildroot-linux-gnueabi-gcc COLLECT_LTO_WRAPPER=/opt/arm-toolchain-4.7.x/bin/../libexec/gcc/arm-buildroot-linux-gnueabi/4.7.3/lto-wrapper 目标:arm-buildroot-linux-gnueabi 配置为:./configure --prefix=/opt/buildroot-2014.02/output/host/usr --sysconfdir=/opt/buildroot-2014.02/output/host/etc --enable-shared --enable-static --target=arm-buildroot-linux-gnueabi --with-sysroot=/opt/buildroot-2014.02/output/host/usr/arm-buildroot-linux-gnueabi/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/opt/buildroot-2014.02/output/host/usr --with-mpfr=/opt/buildroot-2014.02/output/host/usr --enable-target-optspace --disable-libquadmath --enable-tls --disable-libmudflap --enable-threads --with-mpc=/opt/buildroot-2014.02/output/host/usr --with-float=soft --disable-decimal-float --with-arch=armv5te --with-abi=aapcs-linux --with-cpu=arm926ej-s --with-float=soft --with-mode=arm --with-pkgversion='Buildroot 2014.02' --with-bugurl=http://bugs.buildroot.net/ --enable-languages=c,c++ --with-build-time-tools=/opt/buildroot-2014.02/output/host/usr/arm-buildroot-linux-gnueabi/bin --disable-libgomp 线程模型:posix gcc 版本 4.7.3 (Buildroot 2014.02) 好了,万事大吉,可以编译程序了。