Linux-交叉编译工具链的制作(crosstool-ng1.23)——从入门到放弃!(提供config和build离线安装包),基于vm15.5pro、Ubuntu16

前言

建议直接看1.24的教材,这篇教程写的很烂,如果你能跟着成功build,那说明你是个天才!
1.24版本在https://blog.csdn.net/qq_42112618/article/details/120848016
本文默认读者已掌握Linux操作系统常用指令,比如cd mkdir cp…
如果发现某些下载任务很慢或者失败,请更换自己的网络环境或者hosts或者连接学校的vpn或者直接下载离线安装包。
提供ct-ng build所需的离线安装包,这是耗时最长的一步,有离线包能快很多,而且这一步下载失败的人有很多。提供ct-ng 的config配置文件,在图形界面配置有很多项要修改,如果配置出错,可以直接下载config覆盖试试。(使用方法在https://blog.csdn.net/qq_42112618/article/details/120848016码云地址https://gitee.com/steveqobs/linux)
如果你完成到下面这一步,恭喜你,通关了!(这一步构建了一小时)
在这里插入图片描述

主要流程

流程图:没空画,自己看目录0.0!

开始

建议全程在普通用户权限下完成

一、建立文件夹、下载工具

下面三句指令,注意所在文件夹位置
我在默认位置,也就是 /home/steve下输入的指令

1、 首先创建arm-linux-tool文件夹

2、 打开arm-linux-tool文件夹

3、 下载crosstool-ng-1.23.0到这个文件夹。

注意这里下载的版本是1.23.0。官网有1.24,本文基于1.23。

mkdir arm-linux-tool
cd arm-linux-tool
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.bz2

三个步骤如下图所示
在这里插入图片描述

4、 解压

输入以下指令解压crosstool-ng-1.23.0.tar.bz2,到当前文件夹。
结果就是当前文件夹会多出来一个crosstool-ng-1.23.0文件夹

tar -xvjf crosstool-ng-1.24.0.tar.bz2

解压完成:
在这里插入图片描述

5、 在当前arm-linux-tool文件夹下,创建三个文件夹:

crosstool-build crosstool-install src

mkdir crosstool-build crosstool-install src

使用ls可查看到已经创建完成
在这里插入图片描述

6、 使用sudo apt-get install下载依赖包,

sudo要输入密码

sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man

安装完成,如下图所示:
(这一步可能有读者出错,有些包下载失败,这个自己搞定,百度一下,肯定有一样的情况)
在这里插入图片描述

二、ct-ng 编译make和安装make install

1、进入crosstool-ng-1.23.0文件夹

cd crosstool-ng-1.23.0

2、三步: 配置(configure)、编译(make)、安装(make install)。

接下来要make了,生成的ct-ng文件会在下面的地址,注意下面的地址steve替换成自定义的字段,
./configure --prefix的作用是:编译的时候用来 **指定程序存放路径 **

./configure --prefix /home/steve/arm-linux-tool/crosstool-install/

make
在这里插入图片描述

make install

完成了一小步
(图片中有些文件路径是错的,不要在意这些细节)
在这里插入图片描述

3、完成install 查看ct-ng是否可用

cd /home/steve/arm-linux-tool/crosstool-install/bin
./ct-ng -v

在这里插入图片描述

4、添加环境变量

把ct-ng“export”到环境变量中,方便以后直接用ct-ng调用,而不是只能在某个文件夹运行ct-ng

 export PATH=$PATH:/home/steve/arm-linux-tool/crosstool-install/bin/

三、ct-ng的配置,为build准备

(这一步每个人可能要不一样的配置,不一定要照着做,这一步完成不了ct-ng build的话,就直接参考末尾config文本编辑覆盖,也可以直接跳过去)

1、创建(复制)一个config文件

先来看一下crosstool-ng-1.23.0文件夹里有啥

 cd /home/steve/arm-linux-tool/crosstool-ng-1.23.0

在这里插入图片描述里面有一些样例
cd /home/steve/arm-linux-tool/crosstool-ng-1.23.0/samples

在这里插入图片描述可以看到这里有一些配置好的文件夹、我们可以复制arm-unknown-linux-gnueabi 文件夹到 cross-build中,在后面执行ct-ng的时候使用 继续使用 复制过来的 config文件,我们可以用 ct-ng menuconfig命令打开config配置的图像界面,但是很有可能出错,如果你有正确的config文件,可以把config文件复制到cross-build文件夹中,然后执行ct-ng build开始构建

下面 用两个绝对路径 和参数-r 完成了文件夹的复制,这个也是根据个人情况修改

cp -r /home/steve/arm-linux-tool/crosstool-ng-1.23.0/samples/arm-unknown-linux-gnueabi /home/steve/arm-linux-tool/crosstool-build/

在这里插入图片描述复制arm-unknown-linux-gnueabi/crosstool中的config文件到当前文件夹crosstool-build
cp arm-unknown-linux-gnueabi/crosstool.config .config

2、打开图像界面配置

下面图像界面配置看起来很繁琐,如果清楚自己要配置那些参数 建议自己直接编辑config文件

ct-ng menuconfig

方向键上下选择配置项,左右选择功能键
在这里插入图片描述配置两个地址
local tarballs directory:下载的包会在这个路径
prefix directory:最后要使用的程序会在这个文件夹里
在这里插入图片描述配置如下
local tarballs directory:/home/steve/arm-linux-tool/src
prefix directory:/home/steve/arm-linux-tool/x-tools/${CT_TARGET}

在这里插入图片描述
Target options 配置选项

1.修改交叉编译器针对的架构

设置Target options下的Architecture level为 armv7-a
修改完第一步下面的Tune for CPU就没了。。还是建议大家手工修改.config文件

设置Target options下的Emit assembly for CPU为 cortex-a9


设置Target options下的Tune for CPU为 cortex-a9

在这里插入图片描述
2.设置支持硬件 FPU,iMX6ULL 支持硬件浮点运算单元在这里插入图片描述
在这里插入图片描述
在这里插入图片描述1.修改 Tuple’s vendor string 厂商字符串 如:arm-某-linux-gnueabi-

在这里插入图片描述
修改 Tuple’s alias ,给交叉编译工具起别名,这样会给每个工具创建一个软连接

这样 arm-wh-linux-guneabihf-gcc 就可以使用 arm-linux-gcc 表示。
在这里插入图片描述自定义内核版本和地址
在这里插入图片描述/home/steve/Tools/linux-4.1.15
在这里插入图片描述
在这里插入图片描述如果build过程加载失败,还得自己下载到自定义的文件夹很麻烦在这里插入图片描述
在这里插入图片描述C-compiler 配置选项 gcc版本

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述退出图形界面了
执行

ct-ng build

在这里插入图片描述在这里插入图片描述

在这里插入图片描述build完成
在这里插入图片描述
添加环境变量

PATH=/home/steve/bin:/home/steve/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/steve/arm-linux-tool/crosstool-install/bin/:/home/steve/x-tools/arm-syqCortexA9-eabi/bin
在这里插入图片描述

测试
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42112618/article/details/120792018