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主机上安装
arm-linux 交叉编译toolchain相关推荐
- linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具
Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...
- Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)
文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...
- arm ubuntu 编译boost_为arm linux 交叉编译boost 1.33.1
首先在arm linux环境上要有zlib 1 解开boost压缩包, cd进入解压目录 2 编译出bjam,并配置好,看手册页 3 产生Makefile: ./configure "-sB ...
- Arm Linux交叉编译和连接过程分析(2)
二.编译内核镜像过程 1.编译过程中涉及到到文件: /Makefile 编译产生顶层vmlinux镜像文件 /scripts/Kbuild.include make过程中到一些基本定义 /script ...
- Arm Linux交叉编译和连接过程分析(1)
一.配置内核(Kconfig) 我们配置内核是实质是根据众多目录下面的Kconfig文件中组合成我们需要的一个最佳选择,即最终在根目录下面生成的.config文件,而这个文件会在根目录Makefile ...
- arm linux 交叉编译boost库
测试编译 boost_1.48_0 编译时thread编译失败 测试编译 boost_1.60_0 编译时thread编译成功 编译步骤: 1.运行 ./bootstrap.sh 此时形成b ...
- linux 安装toolchain工具
Cross Toolchain-交叉编译工具链 读者可能会有疑问,为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU) ...
- linux c++ toolchain 配置文件,一步一步建立基于ARM+Linux的cross toolchain
声明:本文在参考网上资料的基础上,以梁元恩的<如何为嵌入式开发建立交叉编译环境>为蓝本修改而成.对于自己在建立过程中遇到的问题进行了详细的说明,本文随自己学习的深入会进行相应的更新. 1引 ...
- cgo linux arm,Golang交叉编译各个平台的二进制文件
熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了 # mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH ...
- ARM的交叉编译工具
ARM的交叉编译工具 Cortex-R and M的toolchain Cortex-A toolchain ARM官方提供了各种环境下的交叉编译工具 要注意的是分为 Cortex-A Family ...
最新文章
- Linq 入门系列 [OfType,ToArray,ToList,ToDictionary]
- 来自未来团队伙伴的一封信
- 我的天,代码居然也需要保养?
- 深入理解 JVM Class文件格式(三)
- java 搭建 web服务器 socket实现
- 吴恩达深度学习笔记(八) —— ResNets残差网络
- 用js代码判断质数_在 JS 中判断,并不是都要用 ===
- 收藏 || 11个超好用的在线检查语法的网站!!!
- [转载] pickle:让python对象序列化
- ffmpeg视频格式转换for windows and linux
- 如何快速裁剪pdf中的页面
- 用python制作3d动图_怎样用Python制作好玩的GIF动图
- 跳过基于AMD平台安装ESXI 6.7,并部署win10和黑群辉虚拟机的坑
- Ubuntu 16.04 安装Tensorflow Object Detection API (一)
- 笔记本无法搜索到WiFi问题
- 如何更改计算机属性里面的配置文件,电脑中如何设置共享文件夹的属性防止被删除...
- linux下查找java进程占用CPU过高原因
- 视频理解领域小样本学习调研报告
- 评:Linux多线程服务端编程
- 苍蝇也是肉!ofo卖了遗留在印度的5000辆自行车