久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6368|回復: 3
收起左側

嵌入式4412開發板QT5.7編譯安裝到arm

[復制鏈接]
ID:151620 發表于 2016-12-23 11:16 | 顯示全部樓層 |閱讀模式
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安裝完之后什么sourceinsight、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編譯器編譯直接通過,源碼不難為大家,我直接放在壓縮包里傳給大家了,看一下我的編譯過程(倒騰這個整整用了我一下午的時間)




大愛的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,圖形界面的用戶是修改不了其中的文件的(當然可以chmod777一下,但還是很麻煩),所以,簡單操作,撇開控制臺,右擊源碼壓縮包,直接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的安裝位置,根據需要改動
其實一直沒有搞懂nomakeskip的含義,我感覺用起來一樣,上面的這些內容就是告訴qt需要哪些模塊,不需要哪些模塊,及其安裝路徑等等,具體的可以輸入./configure  --help查看。有些模塊沒有opengl的話要進行修改,否則編譯不通過。這些模塊我都用不到,全部skip掉。還有examples,這個建議大家編譯進去吧,里邊的小例子可以直接用于測試,我已經編譯過了,所以直接nomake,特別注意,所有的連字符/前邊都要加一個空格,exit前要回車,sh文件格式很關鍵,多一個空格都會出錯,大家自己摸索一下,千萬不要亂打空格,即使在每行的最后也不能有空格。-no-iconv \這個必須要加上,否則字庫會出問題,我們暫時不用這個模塊。

設置完成后,運行:
./autoconfig.sh
等待qmake配置一會兒,檢查一下彈出的模塊列表看有沒有少的多的
然后就是套路了
make
哇啦哇啦#¥……%&……*&()*#%%……&(),等待一個小時左右





編譯的期間,再去qt官網上把linuxubuntu版本qt5.7下載下來,這個不要源碼,下載那個.run的文件,下載到電腦上,直接雙擊安裝(注意:qt5.7linux版本只能在ubuntu16上安裝,ubuntu12上是打不開的,不要用控制臺安裝,直接雙擊打開安裝就可以了,默認是安裝在/home路徑下,以后用起來方便)

好了,源碼編譯完成了
make install安裝到opt目錄下面
安裝完成。

這里邊我們用的就是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/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_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指定的字庫文件夾中,再運行,字出來啦,大按鈕太丑了。找了個例子拍了個照片,好啦,完成了。

回復

使用道具 舉報

ID:100515 發表于 2018-11-20 21:00 | 顯示全部樓層
樓主,我配置好了qt的交叉編譯環境,在qt creator的tools也配置好了qmake,為啥生成的可執行文件是x86-64的,不是arm的,只能在ubuntu里面運行,無法在arm板上運行
回復

使用道具 舉報

ID:477468 發表于 2019-2-17 19:12 | 顯示全部樓層
謝謝分享。。。。
回復

使用道具 舉報

ID:515161 發表于 2019-4-18 09:06 | 顯示全部樓層
感謝分享,后面交叉編譯Qt試試
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美乱码久久久久久1区2区 | 亚洲欧美精品国产一级在线 | 91 久久| 免费看黄色视屏 | 中文字幕亚洲精品 | 午夜久久久 | 一区二区三区久久久 | 精品国产一区二区三区日日嗨 | 激情一区二区三区 | 国产在线中文字幕 | 亚洲区一区二 | 久久久综合久久 | 自拍偷拍亚洲视频 | 久久精品国产精品青草 | 欧美日韩精品 | 日本黄色短片 | 精品一级| 一级毛片视频在线 | 国产高清视频在线观看 | 国产一区在线看 | 色天堂影院| 国产精品福利网 | 欧美日韩久久久久 | 九九久久精品视频 | 色性av| 欧美激情国产日韩精品一区18 | 成人国产精品一级毛片视频毛片 | 国产福利视频导航 | 精品在线看 | 中文字幕av一区 | 激情三区| 欧美精品乱码久久久久久按摩 | 69精品久久久久久 | 亚洲一区二区三区免费在线观看 | 久国产视频 | 91福利网 | 国产欧美日韩一区 | 国产精品久久久久久av公交车 | 日本视频一区二区三区 | 日韩精品一二三 | 一区二区三区在线观看视频 |