OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6450|回复: 2

【转帖】嵌入式4412开发板QT5.7编译安装到arm

[复制链接]

45

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2015-5-7
在线时间
10 小时
发表于 2016-7-27 17:17:35 | 显示全部楼层 |阅读模式
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统
Orandragon记录
本文转自迅为4412开发板群:http://topeetboard.com
平台:iTOP-4412精英版+4.3寸屏
有学东西写文章的习惯,毕竟都是入门,在这里记录一下安装过程,虽然可能短期内用不到了,但以后用到的时候可以作为参考。
********************************华丽的分割线***************************
1、从网上下载所有最新的源码
        Ubuntu16.0 amd64版本第一个,这个就不要源码了,直接安装就好了
        QT5.7.0,万能的度娘一找就找到了(官网下载),注意是下载源码,linux版本的源码ARM-NONE-LINUX-GNUEABI-GCC4.8,arm-***以后就这么写了,名字太长,这个选择源码或者选择编译好的都可以,有一个博客(http://blog.csdn.net/ee230/article/details/41513957)搜集到了从08-14版本的所有编译器版本,如果从官方下载比较费劲,还要注册啥的,(谁要有兴趣去把1516下载下来,发我一份),大公司就是装逼,注册都这么费劲
2ubuntu16的安装就没什么可以讲得了,虚拟机一路下一步
3、系统装好了,装一下辅助软件。Wine1.9,这个安装过程貌似有什么特殊需要注意的问题,ssh的安装,直接apt-get就好了,其实国外服务器也不是很慢的,我没有改服务器,下载速度500~600kbps还是可以接受的。ATTENTION:最新版本的ssh不支持旧版本的加密协议,导致客户端连接会出现问题,这个时候就该度娘出马了,问题好解决,不写了,自己搜一下一步一步跟着做。Wine安装完之后什么source insight、notepad++呀就全装上吧,你想装个QQ也行,把字库改一下,要不用不了,以后基本所有操作就在linux下进行了。
4、编译器的安装,这个地方要安装两个编译器(如果你以后不想找麻烦的话),arm-***q09arm-***q14(下文继续简化为q09q14)装第一个编译器的原因是为了编译kernel(用q14当然也可以,期间你需要极其细心以及极具耐心的调试,我编译通过,耗时两天,新版编译器内联函数编译方法改变很大,所以要一点一点调试,当然有问题可以多交流~~),编译器就不重装了,安装过程也比较简单,直接解压到opt目录下然后配置一下环境就可以了(鉴于马上要编译qt,这个地方先把q09的环境注释起来,添加q14的环境),安装完成后打开控制台,输入arm双击tab,看看有没有很神奇的事情发生(出现了很多arm开头的命令,那说明你成功了)。
5tslib的编译
编译tslib的历程异常曲折,这本来应该是最好编译的一个插件,但是因为版本太久了,2009年就停止更新了吧,其open函数凡是用到O_CREAT的都没有加第三个参数,2009年以后的arm-none编译器要求O_CREAT打开的文件必须要第三个参数,尼玛改来改去累死我了,然后我就惊奇的发现了4412光盘里道长已经给编译好了。。。。。。(4412光盘\iTOP-4412精英版光盘资料\08_源码_QtE以及qtopia2.2.0文件系统\patch),直接拷过去用,然而又是版本的问题,没有与qt5.7.0很好的兼容,况且又没有源码,根本就没法调试嘛,失败。咋整,继续度娘,终于,找到了一个在qt5.5下编译ts的大神,提供了一份完美的源码,一点没动,q2014编译器编译直接通过,源码不难为大家,我直接放在压缩包里传给大家了,看一下我的编译过程(倒腾这个整整用了我一下午的时间)
01.jpg
大爱的tslib呀,强行收藏。
依然用人见人爱的脚本写编译过程,非常的舒畅:
Tslib文件夹下新建文件vim configTslib14.sh  
内容:
#!/bin/sh  
make clean && make distclean
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
CC=/usr/local/arm-2014.05/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/tslib1.4 --cache-file=arm-linux.cache
make && make install
运行./configTslib14.sh  
编译安装完成,其实之前我是先编译好qt,直接tslib复制到qt目录下模块编译,失败(到现在没有找到原因,大家可以尝试先编译qt5.7,然后再模块编译tslib),既然如此就重新打包编译把,直接编译到qt中去好了,所以这个地方可以省下大家的时间,我其实是先成功编译了一次的qt5.7,足足两个小时,结果发现tslib模块编译失败又返回来重新打包编译,所以这篇教程的顺序是先编译的tslib,也希望大家有兴趣研究一下模块编译,这样就可以随意的在qt5.7中增减模块,因为qt5.7最大的特点就是模块化,非常的方便,然而我却没有利用起来。继续教程~
6qt的编译
这个地方我重新编译一下qt,可以给大家保存一些截图,因为第一次编译没有删掉那些没用的模块,足足编译出了140mb的库,尼玛哟什么鼠标键盘nfc啥都有,qt5.7里还带了什么purchasing模块,没错,就是购买模块,有点像apple pay,这些我们都不要,所以我重新编译一下,刚好过程可以screenshot一下了,注意qt5.7必须要q2014的编译器哦,因为qt5.7源码是用stdc++11 版本写的2011年出的c++新规则,你用q2009怎么可能编译通过,之前在这个地方犯2很久),开始操作了。
1、源码解压,个人没有好习惯,源码就在桌面上放着,个人还是习惯图形界面跟控制台一起操作,你要是在控制台root用户下tar,文件夹所属是root,图形界面的用户是修改不了其中的文件的(当然可以chmod 777一下,但还是很麻烦),所以,简单操作,撇开控制台,右击源码压缩包,直接extract here解压
留下压缩包以备后用,这里可以看到控制台tar的文件夹旁边都有一个小锁,普通用户只可以读不可以更改的。
02.jpg
  
Ctrl+alt+t打开控制台,vim修改qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件,开始添加这三句,告诉Qmake咱们的平台,这些脚本的解释在官网都有,有兴趣的自己去看一下
03.jpg
/********************************新加入***************************/
QT_QPA_DEFAULT_PLATFORM = linux #eglfs  
QMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
04.jpg
编译器名字加上none,当然你用友善编译器、elf编译器都可以,根据名字修改,保存。
qt-everywhere-opensource-src-5.3.0/目录下为方便配置建立一个autoconfig.sh文件(直接文件夹右击新建,双击打开),内容为:
#!/bin/sh
./configure \
-v \
-prefix /opt/qt5.7.0  \
-release \
-opensource \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-no-opengl \
-skip qt3d \
-skip qtcanvas3d \
-skip qtpurchasing \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-iconv \
-nomake examples \
-nomake tools \
-skip qtvirtualkeyboard \
-I/opt/tslib1.4/include \
-L/opt/tslib1.4/lib
exit
最后两行为tslib的安装位置,根据需要改动
其实一直没有搞懂nomakeskip的含义,我感觉用起来一样,上面的这些内容就是告诉qt需要哪些模块,不需要哪些模块,及其安装路径等等,具体的可以输入./configure  --help查看。有些模块没有opengl的话要进行修改,否则编译不通过。这些模块我都用不到,全部skip掉。还有examples,这个建议大家编译进去吧,里边的小例子可以直接用于测试,我已经编译过了,所以直接nomake,特别注意,所有的连字符/前边都要加一个空格,exit前要回车,sh文件格式很关键,多一个空格都会出错,大家自己摸索一下,千万不要乱打空格,即使在每行的最后也不能有空格。-no-iconv \这个必须要加上,否则字库会出问题,我们暂时不用这个模块。
设置完成后,运行:
./autoconfig.sh
等待qmake配置一会儿,检查一下弹出的模块列表看有没有少的多的
然后就是套路了
make
哇啦哇啦#¥……%&……*&()*#%%……&(),等待一个小时左右
05.jpg
编译的期间,再去qt官网上把linuxubuntu版本qt5.7下载下来,这个不要源码,下载那个.run的文件,下载到电脑上,直接双击安装(注意:qt5.7linux版本只能在ubuntu16上安装,ubuntu12上是打不开的,不要用控制台安装,直接双击打开安装就可以了,默认是安装在/home路径下,以后用起来方便)
好了,源码编译完成了
make install安装到opt目录下面
        安装完成。
       
06.jpg


07.jpg
08.jpg
09.jpg
10.jpg
11.jpg
12.jpg
13.jpg
14.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

45

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2015-5-7
在线时间
10 小时
 楼主| 发表于 2016-7-27 17:18:06 | 显示全部楼层
这里边我们用的就是plugins lib include
还没有完成tslib还没有以插件的形式安装进qt
我们进入这个文件夹cd qt-everywhere-opensource-src-5.7.0/qtbase/src/plugins/generic/tslib
运行我们刚刚编译出的qmake      /opt/qt5.7.0/bin/qmake
创建好makefile
然后make
make install
下面就可以打包啦tar一下tslibqt5.7.0),插上sd卡复制到开发板再解压到开发板的opt目录(没有的话就自己建一个),根据道长的qt视频随便编译一个程序,我拖了一个大按钮上去,拷贝到开发板运行测试一下
我们要的就是这个.so我们看到已经自动安装在里边啦
opt目录下 tar –zvcf qt.gz qt5.7.0/
复制到u
顺便从ubuntu里复制几个好看的字库 我这里复制了两个 ukai.ttc uming.ttc,感觉不错哦,复制带中文字库的,以后写程序就用它了,除非你不用中文
其他乱七八糟的都是我常年不整理的遗留物
下面的操作转战开发板开发板搭载的系统就是道长提供的kernelbusybox这里busybox希望用最新版本的话就去官网下载一个自己编译吧不操作了,一切从简。
放进开发板的opt目录下没有就自己新建一个
搭建环境
export TSLIB_ROOT=/opt/tslibexport QT_ROOT=/opt/qt5.7.0
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_TSEVENTTYPE=input
export TSLIB_CALIBFILE=/opt/tslib/pointercal
export TSLIB_CONFFILE=/opt/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/libQT_ROOT/libTSLIB_ROOT/libTSLIB_ROOT/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
我的tslib1.4改名为tslib
这是我的设置设置内容官网上讲解非常详细自行查看,按照自己的实际操作
配置完成source更新一下环境
然后打开opt/tslib/etc下的ts.conf把第二行的注释去掉ts设置成输入模式
好啦配置完成了有没有很激动赶紧做个程序试一下按照道长的qt教程去电脑端在qtcreator里拖一个大按钮进去qmake一下拷进开发板./test 运行一下心哇凉哇凉的又有错误说缺少stdc++.so.6,这是因为我们kernel的环境下没有这个库,好解决,去编译器下的目录复制一个进来就行了,放到环境目录的任意一个目录下,以后写程序难免会用到开发板没有的库,解决方法有两个,一个是复制一个库进来,一个是静态编译。其实对于qt这个系统来讲,静态编译应该是非常好的一种解决方法,可以省下很大的空间,毕竟我们就只运行一个程序。但是,如果要采用静态编译,我们必须把qt编译成静态的,这样才能有静态库来编译我们的静态程序。这里不演示了,毕竟我的板子还是16g内存的哈哈哈,不在乎这点小空间(当然安装程序的空间需要你重新编译uboot来多分配一点,否则就只有300mb左右哦,300mb也够用了)。
回正题运行
我们先运行一个tslib的初始化程序,在opt/tslib/bin
这个程序会校准触摸屏并把校准信息储存在profile文件中指定的目录下边
好的校准完成了
运行一下我的大按钮./test
老子的字不见了看一下超级终端字库错误忘记把字库放进去了刚才存的字库拷贝到profile指定的字库文件夹中,再运行,字出来啦,大按钮太丑了。找了个例子拍了个照片,好啦,完成了。

回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2020-4-28
在线时间
8 小时
发表于 2020-5-16 10:48:24 | 显示全部楼层
大佬说的也太含糊不清了啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表