
- 前言
- 主要流程
- 开始
- 一、建立文件夹、下载工具
- 1、 首先创建arm-linux-tool文件夹
- 2、 打开arm-linux-tool文件夹
- 3、 下载crosstool-ng-1.24.0到这个文件夹。
- 4、 解压
- 5、 在当前arm-linux-tool文件夹下,创建三个文件夹:
- 6、 使用sudo apt-get install下载依赖包
- 二、ct-ng 编译make和安装make install
- 1、进入crosstool-ng-1.24.0文件夹
- 2、三步: 配置(**configure**)、编译(**make**)、安装(**make install**)。
- 3、完成install 查看ct-ng是否可用
- 4、添加环境变量
- 三、ct-ng的配置,为build准备
- 1、创建(复制)一个config文件
- 2、配置config文件并复制到crosstool-build文件夹
- 3、执行 打开图像化菜单,确认配置
- 四、开始ct-ng build
- 五、测试arm-某某-某某-gcc
- 1、运行arm-某某-某某-gcc
- 2、接下来我们把它添加到PATH中
- 3、测试c语言文件
0、无论是vm还是VirtualBox虚拟机软件都可以参考这个教程
1、我已经用vm15.5pro、ubuntu16.04完成了交叉编译工具链的制作(crosstool版本1.23,博客地址:https://blog.csdn.net/qq_42112618/article/details/120792018),这次用 全新的环境 再制作一次,并且使用VirtualBox6.1.26代替vm虚拟机软件,因为有些同学的电脑安装Ubuntu系统无法打开甚至蓝屏,我用了别的电脑也出现蓝屏问题了, 很多方法都没解决,最后使用VirtualBox6.1.26完成系统安装,配置好之后,使用很流畅(实际上也有一些小问题),明显比我分配了4GB内存的vm上的ubuntu流畅。(virtualbox安装ubuntu的教程自行百度)。
这次使用crosstool最新版本 1.24 。
建议提前安装好vim,因为在编辑bashrc或者config很有可能出现问题,使用vim在终端里编辑会简单一些。
2、如果发现某些下载任务很慢或者失败,请更换自己的网络环境或者hosts或者连接学校的vpn或者直接下载离线安装包。本文提供ct-ng build所需的离线安装包,这是耗时最长的一步,有离线包能快很多,而且这一步下载失败的人有很多。
3、教程中 steve等字段 自行替换成自己的ubuntu用户名!!!!!
sudo apt-get install vim主要流程
流程图:没空画,自己看目录0.0!
更新了更新了有了有了
建议全程在普通用户权限下完成
一、建立文件夹、下载工具下面三句指令,注意所在文件夹位置
我在默认位置,也就是 /home/steve下输入的指令
首先创建一个文件夹,我们要把crosstool的包下载到这个文件夹,并且在这里解压,之后要使用到crosstool-ng-1.24.0这个文件夹中的程序。
2、 打开arm-linux-tool文件夹 3、 下载crosstool-ng-1.24.0到这个文件夹。mkdir arm-linux-tool cd arm-linux-tool wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.24.0.tar.bz2
你最好清楚的知道这个文件夹到底在哪里!
依次使用ctrl c 复制以上命令,在虚拟机中使用ctrl shift v黏贴到终端
下载完成,接下来我们解压刚下载的压缩包
tar -xvjf crosstool-ng-1.24.0.tar.bz2
解压完成,可使用ls命令查看当前文件夹下已经有了解压后的文件夹
继续,创建三个文件夹
mkdir crosstool-build crosstool-install src6、 使用sudo apt-get install下载依赖包
然后安装这些包
sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man
一般会一次下载成功或着有一两个安装失败,我这就比较惨了,没有一个下载了的,可能是因为我安装ubuntu的时候没勾选安装软件。(后来我又新建了一个Ubuntu虚拟机,安装ubuntu的时候选择了下载更新,就没有出现下面的问题,一次apt-get成功,下面图片中的问题也给出了相应的解决办法)
依次执行以下指令,解决了问题。更换了apt源为腾讯镜像
如果没有上面的问题就跳过!
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak sudo wget -O /etc/apt/sources.list http://mirrors.cloud.tencent.com/repo/ubuntu20_sources.list sudo apt-get update sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man sudo apt-get -f install sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man二、ct-ng 编译make和安装make install 1、进入crosstool-ng-1.24.0文件夹
准备就绪,接下来进入crosstool-ng-1.24.0文件夹
cd crosstool-ng-1.24.02、三步: 配置(configure)、编译(make)、安装(make install)。
接下来要make了,生成的ct-ng文件会在下面的地址,注意下面的地址steve替换成自定义的字段,
./configure --prefix的作用是:编译的时候用来 **指定程序存放路径 **
./configure --prefix /home/steve/arm-linux-tool/crosstool-install/
出现以下问题 要求的工具:libtool没有找到,很多同学也出现过这种问题,我们来解决一下。下面三句1、确认libtool已经安装。2、安装libtool-bin。3、再次运行configure。
sudo apt-get install libtool sudo apt-get install libtool-bin ./configure --prefix /home/steve/arm-linux-tool/crosstool-install/
如下图所示,已经解决。编译
make
安装
make install
安装完成
然后进入安装目录执行ct-ng
cd /home/steve/arm-linux-tool/crosstool-install/bin
在文件夹里我们也能看到它
4、添加环境变量我们添加一下ct-ng的文件夹路径到PATH中,方便我们之后调用
export PATH=$PATH:/home/steve/arm-linux-tool/crosstool-install/bin/
指令说明:export PATH=你要添加的地址:$PATH
#配置完后可以通过echo $PATH查看配置结果。
#生效方法:立即生效
#有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢#复原有的path配置
#用户局限:仅对当前用户
也就是如果你下次打开终端窗口这个path就失效了
如果你会用vim修改,建议用vi ~/.bashrc在最下面添加PATH(如果path是空的就别用这个方法,就先用临时变量把),然后保存退出,使用source ~/.bashrc使其生效,这里不介绍这个方法了,我们接下来复制config文件,准备build
临时环境变量添加后,ct-ng可以在别的文件路径也能使用了
(这一步每个人可能要不一样的配置,不一定要照着做,这一步完成不了ct-ng build的话,就直接参考config文本编辑覆盖)
1、创建(复制)一个config文件先来看一下crosstool-ng-1.23.0文件夹里有啥
里面有一些样例
cd /home/steve/arm-linux-tool/crosstool-ng-1.23.0/samples
我们可以从这里样例中复制config文件
然后在menuconfig图形化菜单中配置 目标路径、目标cpu、目标文件名等
ct-ng menuconfig是必须要有这一步的,就算是直接复制好正确的config也得执行一下ct-ng menuconfig并保存,已确保没有少某些文件
码云地址:https://gitee.com/steveqobs/linux
我已经把正确配置的config文件上传至我的公开仓库中,build需要的包也在里面,可以在ubuntu中使用git clone直接下载到本地,如果不会git 可以参考https://blog.csdn.net/qq_42112618/article/details/120864188
就下面这一句,把 .config 和所有 ct-ng build 需要的包下载ok了
git clone https://gitee.com/steveqobs/linux2、配置config文件并复制到crosstool-build文件夹
注意:.config文件是隐藏文件,需要用ls -a 才能看到,
可使用vi .config进行编辑,也可以在windows编辑好了在复制到ubuntu中
复制到/home/用户名/arm-linux-tool/crosstool-build/
以下标注了关键配置
local tarballs directory: 下载的包会在这个路径
prefix directory: 最后要使用的程序会在这个文件夹里
(如果你没安装vim就会是下面这样纯白的文字)
vi /home/steve/
这里自定义成自己的名字、厂商名等
还有cpu、linux内核版本等、这里不再描述,根据自己的情况修改。
复制到crosstool-build文件夹
我是git克隆到本地文件夹了,然后把编辑好的config复制到crosstool-build文件夹中:
(两个文件路径中间有空格)
cp /home/steve/linux/.config /home/steve/arm-linux-tool/crosstool-build/.config
3、执行 打开图像化菜单,确认配置ct-ng menuconfig
方向键上下选择配置项,左右选择功能键
确认完毕后 save 了再exit
其他配置比如cpu型号 linux内核 自行研究
退出图像化菜单
四、开始ct-ng buildct-ng build
很可能会遇到错误,可能因为网络、可能因为本来就没有这个包
下面的意思是isl包 下载失败
之前git 下载的包就派上用途了 直接全选复制到src
/home/steve/arm-linux-tool/src
发现这次build和之前需要的包不一样了,最容易出错的isl, 之前是0.16版本这次0.20版本,没下载成功,然后我去http://mirror.sobukus.de/files/src/isl/
找到了对应版本,拖进了ubuntu
再次执行ct-ng build
应该没毛病了 等一小时吧
耗时43分钟,还行,之前最久build的一次是69分钟
到这一步之后,我开始找要执行的文件在哪,发现同样的配置,1.24和1.23生成的名字不一样了
注意在这个文件夹/home/steve/x-tools/arm-syqCortexA9-eabi/bin
我们先到上面这个文件夹试一下能不能用,注意加个 ./
1、运行arm-某某-某某-gcc./arm-某某-某某-gcc --version
如果在PATH中添加了arm-某某-eabi-gcc所在文件夹路径,那么在别的路径下只执行arm-某某-eabi-gcc也能成功
vi ~/.bashrc
翻到最下面 按 i 进入编辑模式
如果你的PATH是空的那你要小心,得把他们全加上,不然你的所有命令都无法使用,到时候还得添加临时环境变量
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
生效
source ~/.bashrc3、测试c语言文件
随便找个文件夹新建一个c语言文件试试
右键单击gedit打开输入
#includeint main (void) { printf("!!! hello !!!"); return 0; }
保存并关闭
arm-某某-某某-gcc hello.c -o hello
查看生成的文件信息
file hello
生成的是hello
本来应该在开发板上面执行的。gcc编译的文件可以执行
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)