赞
踩
很多初学者创建最小根文件以及在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
因为编译器不同导致的错误
步骤五:还是回到一开始的界面,图一,点击System configuration,进入配置界面,配置如下。
步骤六:回来一开始的页面,即图一,点击Filesystem images,进入配置界面,配置如下
步骤七:make
操作到此就结束了,成功的话结果如下:
这样子就利用buildroot创建了最小文件系统了,比起busybox简单了很多,关于每一个选项为什么要这么配置,大家可以上网查,烧录进imx6ull,可以正常运行,没有什么问题,这里就不截图了。接下来就是搭建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!"
一般来说,直接运行qt代码就行了,之前我用busybox,就是直接./xxx就可以运行了,但是这会报下面这种错误
解决方法就是在./xxx后面添加-platform linuxfb就可以了
./time -platform linuxfb
但是有一个问题,界面显示如下
所有的中文,数字都显示不出来,恼火。
终端显示,看样子好像是找不到字体库的原因,
解决方法:在Windows路径C:Windows\Fonts下拷贝字体(ttf后缀)到目标平台/usr/lib/fonts下即可。
你以为这就完了么?接下来还有一个坑,看视频。
可以发现,我们要按下的是按键,但是却是在按键底下一段距离,就是说触摸不准确。可能有人会说,你没有做触摸校准。但事实上我已经校准了n遍了就是没能解决问题。
解决方法:一开始以为是不是我buildroot哪里配置出了问题了,纠结了好久,最后还是另外一位博主拯救了我,只需配置两个环境变量,如下,我们也可以添加到/etc/profile里边,就不用每次都配置了。
export QT_QPA_EGLFS_TSLIB=1
export QT_QPA_FB_TSLIB=1
效果如下:
创建新的文件系统之后,之前用busybox的配置就都不见的,导致我的网络都用不了,网络驱动是正常,驱动是在内核里边,那么问题可能就出现在配置ip地址和子网掩码这部分上,我记得之前有在一个文件里边配置如下:
解决方法:在/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
在这里要感谢下面几位博主,大家也可以多看看
buildroot配置QT5和tslib
IMX6ULL开发板设置静态IP
TSlib校准没问题,Qt触摸不准
Buildroot成功后如何编译Qt应用程序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。