打印
[其它]

【MY-iMX6UL套件试用】+3. Linux编译

[复制链接]
1869|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skawu|  楼主 | 2018-4-8 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
准备:
交叉编译工具:
gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz

交叉编译工具配置文件:
gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env

QT5程序交叉编译工具:
fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

U-boot源码:
u-boot-2016.03_svn129_20180307.tar.xz

Linux源码:
linux-4.1.15_svn196_20180124.tar.xz

imx-4.1-krogoth_201712261750.tar.xz

创建工作目录:和官方保持一致可以少改很多东西
源码目录:
$ mkdir ~/my-imx6/02_source –p
工具目录:
$ mkdir ~/my-imx6/03_tools –p
镜像目录:
$mkdir ~/my-imx6/04_image –p
$mkdir ~/my-imx6/04_image/image-linux-4115 –p
应用程序目录:
$ mkdir ~/my-demo


安装linux交叉编译工具链
$ cd ~/my-imx6/03_tools/
把交叉编译工具链和配置文件复制到此目录,并解压交叉编译工具链
$ tar xvf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz
source配置文件
$source gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env
检查环境变量
$ ${CROSS_COMPILE}gcc –v
最后会输出:
gcc version 5.3.1 20160113 (Linaro GCC 5.3-2016.02)


安装QT5交叉编译工具链
拷贝fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh到~/my-imx6/03_tools/目录下,然后执行:
$ sh fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
默认安装路径为/opt/fsl-imx-fb/4.1.15-2.1.0,所以我们一路回车即可输入root权限密码即可。
查看安装是否正确:
$ source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-vfp-neon-poky-linux-gnueabi
$ qmake -v
最后输出:
QMake version 3.0
Using Qt version 5.6.2 in /opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib


编译uboot
在02_source目录下解压uboot源码
$ tar xvf u-boot-2016.03_svn129_20180307.tar.xz
$ source ~/my-imx6/03_tools/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env
$ cd u-boot-2016.03
$ make distclean
myimx6ek140p-6g_defconfig在configs目录下可以找到
$ make myimx6ek140p-6g_defconfig
$ make
编译完成最后一句为:
MKIMAGE u-boot.imx
使用ls命令可以看到在uboot根目录下有一个u-boot.imx文件
把生成的u-boot.imx文件拷贝重命名到~/my-imx6/04_image/image-linux-4115目录下成为我们需要的固件
$ cp u-boot.imx ~//my-imx6/04_image/image-linux-4115/uboot-myimx6ek140p-6g.imx


编译内核
在02_source目录下解压linux源码
$ source ~/my-imx6/03_tools/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env
进入Linux源码目录,执行:
$ make distclean
myimx6a7_defconfig在arch/arm/configs目录下
$ make myimx6a7_defconfig
$ make zImage
编译完成后最后一句输出:
Kernel : arch/arm/boot/ZImage is ready
拷贝重命名zImage到~/my-imx6/04_image/image-linux-4115目录成为我们需要的固件
$cp arch/arm/boot/zImage ~/my-imx6/04_image/image-linux-4115/zImage-myimx6a7


编译设备树
设备树在arch/arm/boot/dts/myimx6ek140p-6g.dts
$ source ~/my-imx6/03_tools/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env
$ make myimx6ek140p-6g.dtb
在arch/arm/boot/dts/目录下会得到myimx6ek140p-6g.dtb文件
复制myimx6ek140p-6g.dtb到image目录
$ cp arch/arm/boot/dts/myimx6ek140p-6g.dtb ~/my-imx6/04_image/image-linux-4115/


编译模块
$ source ~/my-imx6/03_tools/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env
编译:
$ make modules
安装:
$ make modules_install INSTALL_MOD_PATH=./modules
打包模块文件:
$ cd modules
$ tar cjf ../modules.tar.bz2 *
复制模块包到image目录
$ cp ../modules.tar.bz2 ~/my-imx6/04_image/image-linux-4115/kernel-modules-myimx6g.tar.bz2


应用程序编译
$ source ~/my-imx6/03_tools/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf-env
编写代码
编译
$ ${CROSS_COMPILE}gcc hello.c -o hello.out
$ file hello.out
保存可执行文件到你想要的目录



相关帖子

沙发
巧克力娃娃| | 2018-4-9 08:33 | 只看该作者

使用特权

评论回复
板凳
小熊配齐| | 2018-4-14 10:28 | 只看该作者
你用得谁家得板子啊?

使用特权

评论回复
地板
skawu|  楼主 | 2018-4-14 10:31 | 只看该作者
小熊配齐 发表于 2018-4-14 10:28
你用得谁家得板子啊?

看标题,明远智睿的板子

使用特权

评论回复
5
小熊配齐| | 2018-4-14 10:44 | 只看该作者
标题没写啊,没用过他家得板子,好用嘛,我买过芯灵思一块,还不错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

110

帖子

0

粉丝