当前位置:   article > 正文

buildroot创建最小根文件(支持驱动与QT)_buildroot qt

buildroot qt

buildroot创建最小根文件(支持驱动与QT)

前言

很多初学者创建最小根文件以及在arm板部署qt开发环境都是用的busybox,虽然可以让我们了解底层步骤,要怎么做?为什么要这么做?但是这样子真的是很麻烦,而且存在版本问题,比如编译某个库需要这个版本的编译器,如果不匹配就可能导致编译出错或者编译通过但是没法使用。最近就遇到了一些问题:使用迅为的教程创建的最小文件系统可以运行驱动程序,又移植了alsa-lib和alsa-util,音频可以正常使用;同样用迅为的教程在imx6ull部署QT开发环境,同样的方法移植alsa-lib和alsa-util,QT程序可以正常运行,驱动程序运行不了,音频文件也没法播放。我一气之下用buildroot重新做一个既支持运行驱动,又可以运行QT以及播放音频文件的最小文件系统。说来也是一路坎坷啊,遇到的麻烦可不带少的,那能怎么办呢?百度查呗,下面记录下具体步骤。供后人参考。

创建最小根文件系统

以下操作是从迅为的教程扣出来的。。。
步骤一:下载buiidroot,解压
步骤二:make menuconfig -》 选择Target options,如下:
图一
步骤三:将各项配置成下面的样子
图二
步骤四:回来一开始的页面,即图一,点击Toolchain,进入配置界面,配置如下
注:建议使用buildroot自带的编译器,这样子可以省去很多麻烦,另外如果编译器不一样,就是编译生成的qmake去编译qt程序,再将生成的qt可执行文件放到开发板去运行的话,会提示“no found”

外部编译器(不推荐)
图三
自带编译(推荐)
使用自带的编译器
buildroot编译后的qmake所在的路径是:output/host/usr/bin
使用的qmake路径

因为编译器不同导致的错误
运行qt,提示找不到

步骤五:还是回到一开始的界面,图一,点击System configuration,进入配置界面,配置如下。
图四
图五
步骤六:回来一开始的页面,即图一,点击Filesystem images,进入配置界面,配置如下
图六
步骤七:make
操作到此就结束了,成功的话结果如下:
图七
这样子就利用buildroot创建了最小文件系统了,比起busybox简单了很多,关于每一个选项为什么要这么配置,大家可以上网查,烧录进imx6ull,可以正常运行,没有什么问题,这里就不截图了。接下来就是搭建qt环境了。

利用buildroot搭建qt环境

步骤一:make menuconfig -》 target packages -》选择Graphic libraries and applications进行配置,配置如下:
图八
图九
接下来选择QT5,其他不用动,进入QT5
图十
选中我圈起来的两个,其他先不用管,用到再配置。
图十一
步骤二:make。
步骤三:将生成的压缩包烧录到imx6ull里边,在/etc/profile添加以下代码,以下代码是我从一位博主那里拿过来的,后面我会把他的博客贴出来供大家参考。这些代码是必须的不然会报错。

#!/bin/sh
export T_ROOT=/usr/tslib4arm                        		#目录
export TSLIB_TSDEVICE=/dev/input/event1                     #触摸屏设备文件
export TSLIB_CALIBFILE=/etc/pointercal                		#指定触摸屏校准文件pintercal的存放位置
export TSLIB_CONFFILE=/etc/ts.conf             				#tslib模块配置文件
export TSLIB_PLUGINDIR=/usr/lib/ts/                			#tslib插件库目录
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_FBDEVICE=/dev/fb0                        		#framebuffer设备文件
echo "tslib init success!"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
问题一

一般来说,直接运行qt代码就行了,之前我用busybox,就是直接./xxx就可以运行了,但是这会报下面这种错误

解决方法就是在./xxx后面添加-platform linuxfb就可以了

./time -platform linuxfb
  • 1
问题二

但是有一个问题,界面显示如下
所有的中文,数字都显示不出来,恼火。

终端显示,看样子好像是找不到字体库的原因,
在这里插入图片描述
解决方法:在Windows路径C:Windows\Fonts下拷贝字体(ttf后缀)到目标平台/usr/lib/fonts下即可。

问题三

你以为这就完了么?接下来还有一个坑,看视频。
可以发现,我们要按下的是按键,但是却是在按键底下一段距离,就是说触摸不准确。可能有人会说,你没有做触摸校准。但事实上我已经校准了n遍了就是没能解决问题。

解决方法:一开始以为是不是我buildroot哪里配置出了问题了,纠结了好久,最后还是另外一位博主拯救了我,只需配置两个环境变量,如下,我们也可以添加到/etc/profile里边,就不用每次都配置了。

export QT_QPA_EGLFS_TSLIB=1    
export QT_QPA_FB_TSLIB=1
  • 1
  • 2

效果如下:

问题四

创建新的文件系统之后,之前用busybox的配置就都不见的,导致我的网络都用不了,网络驱动是正常,驱动是在内核里边,那么问题可能就出现在配置ip地址和子网掩码这部分上,我记得之前有在一个文件里边配置如下:
之前busybox配置
解决方法:在/etc/network/interfaces 里边添加如下代码

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
 
# The loopback interface
auto lo
iface lo inet loopback
 
# Wireless interfaces
iface wlan0 inet dhcp
        wireless_mode managed
        wireless_essid any
        wpa-driver wext
        wpa-conf /etc/wpa_supplicant.conf
 
iface atml0 inet dhcp
 
# Wired or wireless interfaces
auto eth0
#iface eth0 inet dhcp
iface eth1 inet dhcp
 
iface eth0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255
 
# Ethernet/RNDIS gadget (g_ether)
# ... or on host side, usbnet and random hwaddr
iface usb0 inet static
        address 192.168.7.2
        netmask 255.255.255.0
        network 192.168.7.0
        gateway 192.168.7.1
 
# Bluetooth networking
iface bnep0 inet dhcp

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

参考链接

在这里要感谢下面几位博主,大家也可以多看看

buildroot配置QT5和tslib
IMX6ULL开发板设置静态IP
TSlib校准没问题,Qt触摸不准
Buildroot成功后如何编译Qt应用程序

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/634472
推荐阅读
相关标签
  

闽ICP备14008679号