arm-linux 交叉编译toolchain

使用的平台ubuntu

cat /proc/version
Linux version 5.3.0-62-generic (buildd@lcy01-amd64-004) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #56~18.04.1-Ubuntu SMP Wed Jun 24 16:17:03 UTC 2020

https://blog.csdn.net/klaus_x/article/details/79540063     可参考其他情况的编译

1.安装crosstool_NG工具

mkdir arm-linux-tools    --》  建立toolchain目录
cd arm-linux-tools/
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.24.0.tar.xz    --》 下载工具源码
tar  xvf crosstool-ng-1.24.0.tar.xz       --》 解压工具包
mkdir crosstool-build crosstool-install src   --》 建立后续将要使用到的各种目录,
cd crosstool-ng-1.24.0/
./configure --prefix /home/yuhang/arm-linux-tools/crosstool-install     --》  配置整个工程并进行依赖检查 
sudo apt-get install help2man                                                           --》 提示缺工具help2man
./configure --prefix /home/yuhang/arm-linux-tools/crosstool-install
sudo apt-get install libtool
sudo apt-get install libtool-bin                                                           --》 提示缺libtool,需要安装2个
./configure --prefix /home/yuhang/arm-linux-tools/crosstool-install
make                                                                                                --》  执行makefile文件
ls
make install                                                                                   --》 编译成功后安装
sudo echo "PATH=$PATH:/home/yuhang/arm-linux-tools/crosstool-install/bin" >> ~/.bashrc     --》 配置环境变量
source /home/yuhang/.bashrc                                                                                                    --》 执行使其生效
ct-ng -v                                                                                                                                    --》 查看安装结果,有GNU Make 版本号之类信息显示

2. 配置交叉编译链

cd samples                                                                          --》   该目录下存在一些默认配置,有arm, avr32, mips, powerpc等硬件平台

arm平台有如下几个:

arm-cortex_a15-linux-gnueabihf
arm-cortexa5-linux-uclibcgnueabihf
arm-cortex_a8-linux-gnueabi
arm-cortexa9_neon-linux-gnueabihf
armeb-unknown-linux-gnueabi
armeb-unknown-linux-uclibcgnueabi
arm-multilib-linux-uclibcgnueabi
arm-unknown-linux-gnueabi
arm-unknown-linux-musleabi
arm-unknown-linux-uclibcgnueabi
arm-unknown-linux-uclibcgnueabihf
armv6-nommu-linux-uclibcgnueabi

因为是制作arm-linux交叉编译链,所以选择arm-unknown-linux-gnueabi进行配置
cp -r arm-unknown-linux-gnueabi/ ../../crosstool-build                                           --》  将arm-unknown-linux-gnueabi文件夹复制到crosstool-build目录下

cd ../../crosstool-build/
 ls
cp arm-unknown-linux-gnueabi/crosstool.config  .config
ct-ng menuconfig                                                       --》 配置

step1: 设定源码包路径和交叉编译器的安装路径,在Path and misc options中,

修改2个路径,  Local tarballs directory和  Prefix directory

选择save后,exit到上级配置

step2: 修改交叉编译器的架构配置

在Target options(在Path and misc options之后)中配置

需要配置点:

  • Architecture level
  • Emit assembly for cpu
  • Use specific FPU

ct-ng build                       --》 配置结束后开始编译

 

[DEBUG]    Trying 'https://ftpmirror.gnu.org/gnu/automake/automake-1.16.1.tar.xz'
[DEBUG]    ==> Executing:  'wget' '--passive-ftp' '--tries=3' '-nc' '--progress=dot:binary' '-T' '10' '-O' '/home/yuhang/arm-linux-tools/crosstool-build/.build/tarballs/automake-1.16.1.tar.xz.tmp-dl' 'https://ftpmirror.gnu.org/gnu/automake/automake-1.16.1.tar.xz'
[ALL  ]    --2021-01-01 01:20:07--  https://ftpmirror.gnu.org/gnu/automake/automake-1.16.1.tar.xz
[ALL  ]    Resolving ftpmirror.gnu.org (ftpmirror.gnu.org)... failed: Connection timed out.

 

[ALL  ]    --2021-01-01 01:20:17--  http://ftpmirror.gnu.org/gnu/automake/automake-1.16.1.tar.xz
[ALL  ]    Resolving ftpmirror.gnu.org (ftpmirror.gnu.org)... 2001:470:142:5::200
[ALL  ]    Connecting to ftpmirror.gnu.org (ftpmirror.gnu.org)|2001:470:142:5::200|:80... failed: Network is unreachable.

 

[ALL  ]    2021-01-01 01:26:08 (11.4 KB/s) - Read error at byte 408311/161197451 (Success). Giving up.
[ALL  ]    
[DEBUG]    ==> Return status 4
[DEBUG]    Not at this location: "http://www.kernel.org/pub/linux/kernel/v4.x/linux-4.20.8.tar.gz"
[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包慢的问题,可使用其他快速下载链接
 wget http://mirror.hust.edu.cn/gnu/mpc/mpc-1.1.0.tar.gz
 wget http://mirror.hust.edu.cn/gnu/ncurses/ncurses-6.1.tar.gz
 wget  mirror.hust.edu.cn/gnu/ncurses/ncurses-6.1.tar.gz
wget http://ftp.sjtu.edu.cn/ubuntu/pool/main/l/ltrace/ltrace_0.7.3.orig.tar.bz2
 

yuhang@yuhang-VirtualBox:~/arm-linux-tools/crosstool-build/.build/tarballs$ ls              --》  下载的tar包路径
automake-1.16.1.tar.xz   linux-4.20.8.tar.gz
gmp-6.1.2.tar.xz.tmp-dl  zlib-1.2.11.tar.xz

 

编译成功后,在tools目录下可以看到toolchain

yuhang@yuhang-VirtualBox:~/arm-linux-tools/tools/bin$ ./arm-unknown-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-unknown-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/yuhang/arm-linux-tools/tools/libexec/gcc/arm-unknown-linux-gnueabi/8.3.0/lto-wrapper
Target: arm-unknown-linux-gnueabi
Configured with: /home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/home/yuhang/arm-linux-tools/tools --with-sysroot=/home/yuhang/arm-linux-tools/tools/arm-unknown-linux-gnueabi/sysroot --enable-languages=c,c++ --with-cpu=arm920t --with-float=soft --with-pkgversion='crosstool-NG 1.24.0' --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --disable-libmpx --with-gmp=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --with-mpfr=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --with-mpc=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --with-isl=/home/yuhang/arm-linux-tools/crosstool-build/.build/arm-unknown-linux-gnueabi/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --enable-plugin --enable-gold --disable-nls --disable-multilib --with-local-prefix=/home/yuhang/arm-linux-tools/tools/arm-unknown-linux-gnueabi/sysroot --enable-long-long
Thread model: posix
gcc version 8.3.0 (crosstool-NG 1.24.0)
yuhang@yuhang-VirtualBox:~/arm-linux-tools/tools/bin$

以上toolchain可在Host主机上安装

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值