目录
利用Buildroot交叉编译出emmc.img文件和配置Qt需要的文件
交叉编译方法和过程
进入由100ask提供的Buildroot的源码目录:
cd /home/book/100ask_imx6ull-sdk/Buildroot_2020.02.x
目录Buildroot_2020.02.x
未进行编译操作前我已压缩进行备份,百度网盘下载链接:
https://pan.baidu.com/s/1_1bUKQsHb9LUxpqZx1hUjw?pwd=iief
然后依次运行下面的命令:
make clean
make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig
这句命令是进行交叉编译前的配置:
然后make
make all -j4
-j4 参数指定使用4个线程并行编译以加快速度。
这里要花很久的时间(我第1次构建用了7个小时,所以最后晚上睡觉前进行),并且因为用的是4个线程并行编译,所以CPU负荷比较重,建议开始前用家用风扇对准主机吹。
2025-01-26 14:26:07 开始启动编译…
2025-01-26 21:57:25 编译结束
用时7个小时…,所以下次重新构建的话还是晚上睡觉前进行吧。幸运的是,Buildroot采用的是增量构建机制,所以后面编译时,它只会重新编译修改了代码的部分。
构建完成的Buildroot_2020.02.x目录我进行了压缩并上传到了百度网盘,下载链接如下:
https://pan.baidu.com/s/1pkdRznvSRhyR7kZkzbLQkA?pwd=puz4
这个压缩文件有点大,9.79GB~
编译完成后的最后几条信息如下图所示:
构建完成的Buildroot_2020.02.x目录我进行了压缩并上传到了百度网盘,下载链接如下:
https://pan.baidu.com/s/1pkdRznvSRhyR7kZkzbLQkA?pwd=puz4
这个压缩文件有点大,9.79GB~
最后构建编译出的文件在目录 ./Buildroot_2020.02.x/output
中,如下图所示:
目录/output/images
下的文件的说明
目录Buildroot_2020.02.x/output/images
的截图如下:
在目录Buildroot_2020.02.x/output/images
下有在博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/144422140 中直接利用内核源码生成过的内核镜像文件zImage、基于IMX6ULL的各个型号的开发板的设备树二进制文件(dtb文件)、
此外还有u-boot文件、根文件系统、进行eMMC烧写时需要的img文件100ask-imx6ull-pro-512d-systemv-v1.img
。
这里要重点说明下进行eMMC烧写时需要的img文件100ask-imx6ull-pro-512d-systemv-v1.img
:
emmc.img文件说明
文件100ask-imx6ull-pro-512d-systemv-v1.img
是进行eMMC烧写时需要的img文件,它里面包含着一个完整的系统,相当于它是把加载程序(boot)、内核(zImage)、设备树文件、根文件系统合到一个文件中了,这样我们在烧写只需要把这个文件烧写到我们的eMMC设备,然后整个嵌入式系统就能完整在开发板上运行了。
关于emmc.img和eMMC的详细介绍,请参见我的另一篇博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/145367399
如果你现在的开发板上没有配置Qt运行环境,那么就需要把文件100ask-imx6ull-pro-512d-systemv-v1.img
烧录到开发板上,相当于更新开发板的加载程序(boot)、内核(zImage)、设备树文件、根文件。
如果需要具体的烧录img文件的方法,请参考下面这个视频【3分20秒开始看】:
https://www.bilibili.com/video/BV1HT421k7GW?vd_source=8fb767d1739ea6b35c7177ba909eed36&p=5
那么如何判断开发板上有没有配置Qt运行环境呢?
运行下面的命令:
find /usr/lib /usr/local/lib -name "libQt5*"
结果如下:
/usr/lib/libQt5Bluetooth.so.5
/usr/lib/libQt5Bluetooth.so.5.12
/usr/lib/libQt5Bluetooth.so.5.12.7
/usr/lib/libQt5Charts.so.5
/usr/lib/libQt5Charts.so.5.12
/usr/lib/libQt5Charts.so.5.12.7
/usr/lib/libQt5Concurrent.so.5
/usr/lib/libQt5Concurrent.so.5.12
/usr/lib/libQt5Concurrent.so.5.12.7
/usr/lib/libQt5Core.so.5
/usr/lib/libQt5Core.so.5.12
/usr/lib/libQt5Core.so.5.12.7
/usr/lib/libQt5DBus.so.5
/usr/lib/libQt5DBus.so.5.12
/usr/lib/libQt5DBus.so.5.12.7
/usr/lib/libQt5ExtSerialPort.so.1
/usr/lib/libQt5ExtSerialPort.so.1.2
/usr/lib/libQt5ExtSerialPort.so.1.2.0
/usr/lib/libQt5Gui.so.5
/usr/lib/libQt5Gui.so.5.12
/usr/lib/libQt5Gui.so.5.12.7
/usr/lib/libQt5Location.so.5
/usr/lib/libQt5Location.so.5.12
/usr/lib/libQt5Location.so.5.12.7
/usr/lib/libQt5Multimedia.so.5
/usr/lib/libQt5Multimedia.so.5.12
/usr/lib/libQt5Multimedia.so.5.12.7
/usr/lib/libQt5MultimediaGstTools.so.5
/usr/lib/libQt5MultimediaGstTools.so.5.12
/usr/lib/libQt5MultimediaGstTools.so.5.12.7
/usr/lib/libQt5MultimediaQuick.so.5
/usr/lib/libQt5MultimediaQuick.so.5.12
/usr/lib/libQt5MultimediaQuick.so.5.12.7
/usr/lib/libQt5MultimediaWidgets.so.5
/usr/lib/libQt5MultimediaWidgets.so.5.12
/usr/lib/libQt5MultimediaWidgets.so.5.12.7
/usr/lib/libQt5Network.so.5
/usr/lib/libQt5Network.so.5.12
/usr/lib/libQt5Network.so.5.12.7
/usr/lib/libQt5OpenGL.so.5
/usr/lib/libQt5OpenGL.so.5.12
/usr/lib/libQt5OpenGL.so.5.12.7
/usr/lib/libQt5Positioning.so.5
/usr/lib/libQt5Positioning.so.5.12
/usr/lib/libQt5Positioning.so.5.12.7
/usr/lib/libQt5PositioningQuick.so.5
/usr/lib/libQt5PrintSupport.so.5
/usr/lib/libQt5PositioningQuick.so.5.12
/usr/lib/libQt5PositioningQuick.so.5.12.7
/usr/lib/libQt5PrintSupport.so.5.12
/usr/lib/libQt5PrintSupport.so.5.12.7
/usr/lib/libQt5Qml.so.5
/usr/lib/libQt5Qml.so.5.12
/usr/lib/libQt5Qml.so.5.12.7
/usr/lib/libQt5Quick.so.5
/usr/lib/libQt5Quick.so.5.12
/usr/lib/libQt5Quick.so.5.12.7
/usr/lib/libQt5QuickControls2.so.5
/usr/lib/libQt5QuickControls2.so.5.12
/usr/lib/libQt5Qui