前言
本文章是参考了师兄(第四维度4)的文章内容,加上师兄指导下,自己总结出来的一些心得和笔记。
师兄:第四维度4
文章参考: https://blog.csdn.net/qq_46079439/article/details/125896105?spm=1001.2014.3001.5502
对下面一些内容的具体实现,目前也不是很完全清楚明白,一句话,还在学习的路上,如果有什么错误的地方请指正。在此之前建议去了解一下交叉编译链
、git分布式版本控制系统
、SDK
。不想看也没事,如果你的开发板跟我这个一毛一样,你完全可以跟着我下面的步骤走。
一、一些准备工作
准备工作说白了其实呢就是下载一些软件,为了更好的开发,建议安装以下Linux环境(有些就是后面要用到的命令)
sudo apt-get install -y sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio unzip rsync file bc wget python cvs git mercurial rsync subversion android-tools-mkbootimg vim libssl-dev android-tools-fastboot
sudo apt-get -y install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++6 libstdc++6 libncurses-dev u-boot-tools
二、获取SDK源码(核心)
什么是SDK
呢,其实差不多就是一个软件包
(里面包含了交叉编译工具链),我们通过git
去获取源码然后通过make
去编译这些源码,然后这个交叉编译环境就安装成功了。
默认源码都存放在github仓库内,请使用如下命令获取:
book@100ask:~$ git clone https://github.com/DongshanPI/buildroot-100ask_t113-pro
book@100ask:~$ cd buildroot-100ask_t113-pro/
book@100ask:~/buildroot-100ask_t113-pro$ git submodule update --init --recursive
book@100ask:~/buildroot-100ask_t113-pro$ git submodule update --recursive --remote
book@100ask:~/buildroot-100ask_t113-pro$ cd buildroot/
book@100ask:~/buildroot-100ask_t113-pro/buildroot$ git submodule update --init --recursive
对于国内无法访问github的同学,可以使用国内备用gitee站点,如下命令。
book@100ask:~$ git clone https://gitee.com/weidongshan/buildroot-100ask_t113-pro
book@100ask:~$ cd buildroot-100ask_t113-pro/
book@100ask:~/buildroot-100ask_t113-pro$ git submodule update --init --recursive
book@100ask:~/buildroot-100ask_t113-pro$ git submodule update --recursive --remote
book@100ask:~/buildroot-100ask_t113-pro$ cd buildroot/
book@100ask:~/buildroot-100ask_t113-pro/buildroot$ git submodule update --init --recursive
获取成功的话,会在你当前目录下出现一个buildroot-100ask_t113-pro
的目录,里面那些就是SDK源码
(包含了交叉编译链
或者说编译器
)了。
对于这一步没有获取成功的,比如出现了下面这种情况:
这个解决方法我放在最后面再细说…
三、编译源码
就是编译上面获取到的源码
跳转到 buildroot-100ask_t113-pro/buildroot目录下去执行下面的命令
book@100ask:~/buildroot-100ask_t113-pro/buildroot$ make BR2_EXTERNAL="../br2t113pro ../br2lvgl " 100ask_t113-pro_sdcard_core_defconfig
book@100ask:~/buildroot-100ask_t113-pro/buildroot$ make V=1
(输入命令之前,注意当前所在路径
!注意当前所在路径
!一定要在存放sdk源码
的buildroot-100ask_t113-pro
的buildroot
目录中去执行这两个命令,不然会出错!!!)
一旦没有什么问题,不出意外会经过一个漫长的等待…够你洗澡吃饭了
四、查看编译链
这一步主要检查上一步有没有把交叉编译链给安装了。
查看交叉编译链:
(存放在获取到的 buildroot-100ask_t113-pro
里面的一个bin
目录)
注意并不是根目录下面的bin
具体操作如下:
ls ~/tools/buildroot-100ask_t113-pro/buildroot/output/host/opt/ext-toolchain/bin
这里这个路径
是不一样的,~
表示用户目录
,我在用户目录
下创建了一个tools目录
,然后把sdk源码
(就是这个buildroot-100ask_t113-pro
文件夹),放在tools目录
下,你的跟我是不一样的,不过你只要找到buildroot-100ask_t113-pro
这个目录,就可以去接着buildroot/output/host/opt/ext-toolchain/bin
去查看bin目录下面的查看交叉编译链
了
五、设置交叉编译工具链,修改环境变量
完成这个步骤,我们首先要修改一个文件,这个文件是用户目录下的隐藏文件,你可以cd ~
过去用户目录,然后ll -a
去查看这个隐藏文件 ./bashrc
。
vim ~/.bashrc
打开这个文件,在最下面粘贴下面的内容:
注意
,这里不是无脑复制粘贴,因为我的bin
目录文件的绝对路径
跟你的bin
文件绝对路径
肯定不一样,这个bin
目录文件就是上一个查看交叉编译链
的那个bin
目录,你可以跳转到那个bin
目录,然后pwd
查看绝对路径
,然后替换掉下面PATH那个我的bin目录的绝对路径
就好了。就第一行要注意一下,剩下两行直接复制就好。
export PATH=$PATH:/home/lsc666/tools/buildroot-100ask_t113-pro/buildroot/output/host/opt/ext-toolchain/bin(这个是上一步查看的bin目录的绝对路径)
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
六、刷新当前shell环境
我们修改了环境变量,当然需要刷新一下,复制下面命令就好:
下面展示一些 内联代码片
。
source ~/.bashrc
source
命令可以刷新shell环境
七、查看一下交叉编译工具的版本号
这个时候我们需要查看一下是否安装、设置对了交叉编译链,则就需要查看一下:
arm-linux-gnueabi-gcc -v
如果正确安装会显示下面信息:
八、最后
以上操作,其实我都是在师兄(第四维度4
)的精心
指导下去完成的,在安装这个交叉编译链
时,也遇到了一个问题(就是第二点所说的那个卡死的问题),就是直接通过github仓库
或者gitee国内站点
都不能够正常获取到完整的sdk源码
(就是这个buildroot-100ask_t113-pro
目录里的东西)。
我当时是师兄通过服务器(不是虚拟机,虚拟机不行,会卡死)去获取到完整的一个源码,然后发个压缩包
给我,最后我通过windows
与ubuntu
的共享文件夹
,在ubuntu
中解压
进了行安装。(关于虚拟机与windows之间怎么开启共享文件夹,我会但我懒,就不说了,可以自己去查一下)。
至于那个SDK源码的压缩包我就放下面了,有需要可以自提:
网盘链接: https://pan.baidu.com/s/16iiQJCs3_odndmvVO1LWYw
提取码: lsc6
一开始,你看这篇文章可能很懵逼,但是慢慢的去了解每一个东西,其实还是能理解的过去的。(懵逼也没事,跟着做就好,保姆级流程,不多不少刚刚好)