9.编程前的准备工作
9.1 使用GIT下载教程源码
下载到Windows中,再用FileZilla上传到Ubuntu;也可以在Ubuntu下用GIT直接下载。
在Windows下启动“Git bash”后执行以下命令:
$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git
在Ubuntu下打开终端后,可以直接执行如下命令。
book@100ask:~$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git
下载成功后,将会得到一个名为“01_all_series_quickstart”的目录,里面含有源码,操作示例如下图所示。
9.2 使用repo获取内核及工具链等
源码的获取方法有2种:本地拷贝、在线下载。这2种方法请选择1种,不要同时选择2种方法。强烈建议使用在线下载,这种方式得到的源码肯定是最新的。
9.2.1 本地拷贝(待更新)
9.2.2 在线下载
100ask_imx6ull开发板的所有代码都是保存在git站点上通过repo命令进行统一管理,可以通过如下命令进行下载或同步。
9.2.3 配置repo
下载repo工具前需要设置git的邮箱和用户名,git邮箱和用户名请根据个人情况进行配置。
book@100ask:~$ git config --global user.email "user@100ask.com" book@100ask:~$ git config --global user.name "100ask"
注意: 请先配置git邮箱和用户名,否则会导致下载失败(如下为参考示例图)。
9.2.4 下载源码
通过repo管理多个git仓库中的源码,可以及时更新最新代码,以方便开发者学习使用。
对于不同版本的IMX6ULL开发板,要执行不同的命令下载源码。
IMX6ULL MINI EMMC版
执行以下4条命令,为方便大家复制,第3条是很长的命令,使用了\来换行,需要一并拷贝:
book@100ask:~$ git clone https://e.coding.net/codebug8/repo.git book@100ask:~$ mkdir -p 100ask_imx6ull_mini-sdk && cd 100ask_imx6ull_mini-sdk book@100ask:~/100ask_imx6ull_mini-sdk$ ../repo/repo init \ -u https://gitee.com/weidongshan/manifests.git -b linux-sdk \ -m imx6ull/100ask_imx6ull_mini_linux4.9.88_release.xml --no-repo-verify book@100ask:~/100ask_imx6ull_mini-sdk$ ../repo/repo sync -j4
注意:下载成功后,可以看到名为Linux-4.9.88的目录,可以在Ubuntu压缩它,再传回Windows。
在Windows下解压后,用source insight建立工程,这样就可以很方便地阅读源码了。
Ubuntu下压缩命令为(最好是下载之后马上压缩,不要编译内核后再压缩,否则文件太大了):
tar cjf Linux-4.9.88.tar.bz2 Linux-4.9.88
以下截图是下载IMX6ULL版源码的过程:
首次下载如果提示 Testing colorized output (for ‘repo diff’, ‘repo status’): 此时输入 y 即可,继续执行 …/repo/repo sync -j4 命令即可开始同步源码(同步代码根据网络情况需要等待数分钟)。
下图为参考示例。
同步完成后如下图所示
注意:repo在线下载的代码和网盘配套资料中的代码是一致的,会每隔一段时间更新一次源码包,如使用在线方式获取源码 可以直接在 ~/100ask_imx6ull-sdk 目录下执行 …/repo/repo sync -c进行同步更新最新代码!
9.3 配置交叉编译工具链
注意:使用我们提供的Ubuntu映象文件时,请按照我们的目录结构,手动设置交叉编译工具链以及编译的架构环境变量配置,(建议配置为永久生效)。
9.3.1 设置交叉编译工具链
交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。
设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量,下面介绍具体设置方法。
在本文档中,源码、交叉编译工具链都是存放于/home/book目录下;如果你的目录不一样,请自行修改本节所讲述的命令。
设置这3个环境变量有多种方法,任意选择其中一种方法即可,建议使用“永久生效”的方法。
9.3.1.1 永久生效
如需永久修改,请修改用户配置文件。
注意:如果不会使用vim命令,可以使用图形化的编辑工具,执行:
gedit ~/.bashrc vim ~/.bashrc
在行尾添加或修改,加上下面几行(第3行第4行为一行命令):
export ARCH=arm export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
设置完毕后,要执行 source ~/.bashrc 命令使其生效,并通过arm-buildroot-linux-
gnueabihf-gcc -v 命令来验证是否配置成功。 book@100ask:~$ source ~/.bashrc book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v
以上操作是设置IMX6ULL Pro版工具链的过程,mini的操作与它类似。
9.3.1.2 临时生效
也可以手工执行“export”命令设置环境变量,该设置只对当前终端有效(另开一个终端需要再次设置)。
执行以下3个命令,第3个命令很长,需要包含第四行全部复制:
book@100ask:~$ export ARCH=arm book@100ask:~$ export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
9.3.1.3 手动指定
先设置PATH环境变量,然后在make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链(执行make命令时指定的参数,只对当前命令有效;下次执行make时仍需要再次指定那些参数)。
示例如下,第1条命令很长,这里使用小字体方便大家复制:
book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin book@100ask:~$ make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
9.3.2 测试交叉编译工具链
9.3.2.1 测试环境变量:
book@100ask:~$ echo $ARCH arm book@100ask:~$ echo $CROSS_COMPILE arm-buildroot-linux-gnueabihf-
9.3.2.2 测试交叉编译器:
执行以下命令,结果见后图:
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v