使用的平台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主机上安装

arm-linux 交叉编译toolchain相关推荐

  1. linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具

    Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...

  2. Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)

    文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...

  3. arm ubuntu 编译boost_为arm linux 交叉编译boost 1.33.1

    首先在arm linux环境上要有zlib 1 解开boost压缩包, cd进入解压目录 2 编译出bjam,并配置好,看手册页 3 产生Makefile: ./configure "-sB ...

  4. Arm Linux交叉编译和连接过程分析(2)

    二.编译内核镜像过程 1.编译过程中涉及到到文件: /Makefile 编译产生顶层vmlinux镜像文件 /scripts/Kbuild.include make过程中到一些基本定义 /script ...

  5. Arm Linux交叉编译和连接过程分析(1)

    一.配置内核(Kconfig) 我们配置内核是实质是根据众多目录下面的Kconfig文件中组合成我们需要的一个最佳选择,即最终在根目录下面生成的.config文件,而这个文件会在根目录Makefile ...

  6. arm linux 交叉编译boost库

    测试编译  boost_1.48_0  编译时thread编译失败 测试编译  boost_1.60_0  编译时thread编译成功 编译步骤: 1.运行 ./bootstrap.sh  此时形成b ...

  7. linux 安装toolchain工具

    Cross Toolchain-交叉编译工具链 读者可能会有疑问,为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU) ...

  8. linux c++ toolchain 配置文件,一步一步建立基于ARM+Linux的cross toolchain

    声明:本文在参考网上资料的基础上,以梁元恩的<如何为嵌入式开发建立交叉编译环境>为蓝本修改而成.对于自己在建立过程中遇到的问题进行了详细的说明,本文随自己学习的深入会进行相应的更新. 1引 ...

  9. cgo linux arm,Golang交叉编译各个平台的二进制文件

    熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了 # mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH ...

  10. ARM的交叉编译工具

    ARM的交叉编译工具 Cortex-R and M的toolchain Cortex-A toolchain ARM官方提供了各种环境下的交叉编译工具 要注意的是分为 Cortex-A Family ...

最新文章

  1. Linq 入门系列 [OfType,ToArray,ToList,ToDictionary]
  2. 来自未来团队伙伴的一封信
  3. 我的天,代码居然也需要保养?
  4. 深入理解 JVM Class文件格式(三)
  5. java 搭建 web服务器 socket实现
  6. 吴恩达深度学习笔记(八) —— ResNets残差网络
  7. 用js代码判断质数_在 JS 中判断,并不是都要用 ===
  8. 收藏 || 11个超好用的在线检查语法的网站!!!
  9. [转载] pickle:让python对象序列化
  10. ffmpeg视频格式转换for windows and linux
  11. 如何快速裁剪pdf中的页面
  12. 用python制作3d动图_怎样用Python制作好玩的GIF动图
  13. 跳过基于AMD平台安装ESXI 6.7,并部署win10和黑群辉虚拟机的坑
  14. Ubuntu 16.04 安装Tensorflow Object Detection API (一)
  15. 笔记本无法搜索到WiFi问题
  16. 如何更改计算机属性里面的配置文件,电脑中如何设置共享文件夹的属性防止被删除...
  17. linux下查找java进程占用CPU过高原因
  18. 视频理解领域小样本学习调研报告
  19. 评:Linux多线程服务端编程
  20. 苍蝇也是肉!ofo卖了遗留在印度的5000辆自行车

热门文章

  1. 软件测试岗完美面试攻略
  2. Matlab 图例 位置的不同命令
  3. Git遇到的问题:This is not a valid source path/URL
  4. Python 如何随机生成姓名?
  5. BT.601和BT.656
  6. 2021五一数学建模ABC思路
  7. 【洛谷试炼场】普及练习场——字符串处理
  8. 以锅炉安全为例,台账管理在安全建设中的作用
  9. 计算机找不到WPS云盘,为什么我的电脑里没有WPS网盘入口?开启教程教给你!
  10. ADF中在jspx页面加载的阶段添加自己的代码