本帖最后由 Aot_Alone 于 2016-7-27 12:04 编辑
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录
有学东西写**的习惯,毕竟都是入门,在这里记录一下安装过程,虽然可能短期内用不到了,但以后用到的时候可以作为参考。 ********************************华丽的分割线*************************** 1、从网上下载所有最新的源码 Ubuntu16.0 amd64版本第一个,这个就不要源码了,直接安装就好了 2、ubuntu16的安装就没什么可以讲得了,虚拟机一路下一步 3、系统装好了,装一下辅助软件。Wine1.9,这个安装过程貌似有什么特殊需要注意的问题,ssh的安装,直接apt-get就好了,其实国外服务器也不是很慢的,我没有改服务器,下载速度500~600kbps还是可以接受的。ATTENTION:最新版本的ssh不支持旧版本的加密协议,导致客户端连接会出现问题,这个时候就该度娘出马了,问题好解决,不写了,自己搜一下一步一步跟着做。Wine安装完之后什么source insight呀、notepad++呀就全装上吧,你想装个QQ也行,把字库改一下,要不用不了,以后基本所有操作就在linux下进行了。 4、编译器的安装,这个地方要安装两个编译器(如果你以后不想找麻烦的话),arm-***q09和arm-***q14(下文继续简化为q09和q14)装第一个编译器的原因是为了编译kernel(用q14当然也可以,期间你需要极其细心以及极具耐心的调试,我编译通过,耗时两天,新版编译器内联函数编译方法改变很大,所以要一点一点调试,当然有问题可以多交流~~),编译器就不重装了,安装过程也比较简单,直接解压到opt目录下然后配置一下环境就可以了(鉴于马上要编译qt,这个地方先把q09的环境注释起来,添加q14的环境),安装完成后打开控制台,输入arm双击tab,看看有没有很神奇的事情发生(出现了很多arm开头的命令,那说明你成功了)。
5、tslib的编译 编译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编译器编译直接通过,源码不难为大家,我直接放在压缩包里传给大家了,看一下我的编译过程(倒腾这个整整用了我一下午的时间)
大爱的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最大的特点就是模块化,非常的方便,然而我却没有利用起来。继续教程~
6、qt的编译 这个地方我重新编译一下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的文件夹旁边都有一个小锁,普通用户只可以读不可以更改的。
Ctrl+alt+t打开控制台,vim修改qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件,开始添加这三句,告诉Qmake咱们的平台,这些脚本的解释在官网都有,有兴趣的自己去看一下
/********************************新加入***************************/ QT_QPA_DEFAULT_PLATFORM = linux #eglfs QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
编译器名字加上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的安装位置,根据需要改动 其实一直没有搞懂nomake和skip的含义,我感觉用起来一样,上面的这些内容就是告诉qt需要哪些模块,不需要哪些模块,及其安装路径等等,具体的可以输入./configure --help查看。有些模块没有opengl的话要进行修改,否则编译不通过。这些模块我都用不到,全部skip掉。还有examples,这个建议大家编译进去吧,里边的小例子可以直接用于测试,我已经编译过了,所以直接nomake,特别注意,所有的连字符/前边都要加一个空格,exit前要回车,sh文件格式很关键,多一个空格都会出错,大家自己摸索一下,千万不要乱打空格,即使在每行的最后也不能有空格。-no-iconv \这个必须要加上,否则字库会出问题,我们暂时不用这个模块。
设置完成后,运行: ./autoconfig.sh 等待qmake配置一会儿,检查一下弹出的模块列表看有没有少的多的 然后就是套路了 make 哇啦哇啦#¥……%&……*&()*#%¥%……&(),等待一个小时左右
编译的期间,再去qt官网上把linux的ubuntu版本qt5.7下载下来,这个不要源码,下载那个.run的文件,下载到电脑上,直接双击安装(注意:qt5.7的linux版本只能在ubuntu16上安装,ubuntu12上是打不开的,不要用控制台安装,直接双击打开安装就可以了,默认是安装在/home路径下,以后用起来方便)
好了,源码编译完成了 make install安装到opt目录下面 安装完成。
|