一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Qt4.8.3移植總結(jié)

 風之library 2014-10-08

最近買了塊天嵌的TQ210,對最新的Qt4.8.3進行了移植,現(xiàn)在做個總結(jié),方便以后查看。 Qt是一個跨平臺的C++應用程序開發(fā)框架,廣泛用于開發(fā)GUI程序。使用Qt開發(fā)的軟件,相同的代碼可以在任何支持的平臺上編譯與運行,而不需要修改源代碼。會自動依平臺的不同,表現(xiàn)平臺特有的圖形界面風格。
Qt在嵌入式開發(fā)中有著廣泛的應用,使用Qt只需編寫一次應用程序和UI,無須重新編寫源代碼,便可跨不同的桌面和嵌入式操作系統(tǒng)進行部署,既節(jié)省了時間又降低開發(fā)成本。

0.編譯環(huán)境

操作系統(tǒng):Debian wheezy 32位
gcc版本: 4.7.1
arm-linux-gcc:4.4.6 (for TQ210 EmbedSky Tech)
開發(fā)板:TQ210(天嵌)
液晶屏:7寸(800×480)

1.安裝tslib

為什么要裝tslib?主要是為了校準觸摸屏以及去抖等功能,為了能更好的使用觸摸屏還是裝吧。
下載地址:http:///projects/tslib.berlios/files/
網(wǎng)上說的tslib1.4其實就是tslib1.0.4,怎么就變成1.4了,汗。。。這個工具比較小,配置一下后直接編譯就行了。

  1. tar -xvjf tslib-1.0.tar.bz2
  2. cd tslib-1.0
  3. ./autogen.sh
  4. ./configure --prefix=/opt/tslib-1.0 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
  5. make
  6. make install

prefix后面是安裝目錄,自己隨便定義,裝好后修改/opt/tslib-1.0/etc/ts.conf,去掉module_raw input 前面的#號,然后把/opt/tslib-1.0里的文件都拷入開發(fā)板,比如我放在了/usr/local里。再配置開發(fā)板的環(huán)境變量,讓tslib能正常工作。

  1. export set TSLIB_FBDEVICE=/dev/fb0
  2. export set TSLIB_TSDEVICE=/dev/event4
  3. export set TSLIB_CONFFILE=/usr/local/etc/ts.conf
  4. export set TSLIB_CALIBFILE=/etc/pointercal
  5. export set TSLIB_PLUGINDIR=/usr/local/lib/ts

運行/usr/local/bin中的ts_calibrate進行校準,成功的話會出現(xiàn)界面,并讓你點擊十字符號,完成后會生成/etc/pointercal文件,這是觸摸屏的校準配置文件。 遇到的問題:

1.在autogen時出錯,提示

./autogen.sh: 4: autoreconf: not found

這是因為系統(tǒng)沒有安裝automake,裝上就行了。

  1. aptitude install autoconf automake libtool

2.在make時出錯,提示

In function ‘open’, inlined from ‘main’ at ts_calibrate.c:229:11: /usr/include/bits/fcntl2.h:51:24: error: call to >‘__open_missing_mode’ declared with attribute error: open with >O_CREAT in second argument needs 3 arguments make[2]: *** [ts_calibrate.o] Error 1

這是因為open函數(shù)的語法不符合最新的gcc,在/tests/ts_calibrate.c中加入open的第三個參數(shù):

  1. if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
  2. cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);
  3. } else {
  4. cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);
  5. }

2.安裝Qt4.8.3

為了開發(fā)方便,我們一般在PC端寫好程序,仿真,調(diào)試完成后再用arm-linux-gcc編譯成arm版的程序,最后拷到開發(fā)板上運行。所以我們必須編譯兩套Qt庫文件:PC端的和arm端的。

2.1.安裝Linux/X11版Qt

下載頁面:http:///downloads
選擇Qt libraries 4.8.3 for Linux/X11得到qt-everywhere-opensource-src-4.8.3.tar.gz,這個和Qt libraries 4.8.3 for embedded Linux是同一個文件,配置不同就可以編譯出不同的版本,所以我們下一個就行了,解壓開,配置,make。

  1. tar -xvzf qt-everywhere-opensource-src-4.8.3.tar.gz
  2. cd qt-everywhere-opensource-src-4.8.3
  3. ./configure -prefix /opt/qt-4.8.3-x11
  4. make
  5. make install

因為庫比較大,要編譯好一段時間,完成后install,-prefix后面的是安裝目錄,根據(jù)需要修改。 在編譯過程中出錯,提示

g++: error: unrecognized command line option ‘-fuse-ld=gold’

這是Qt的一個bug:https://bugs./show_bug.cgi?id=89312 在裝有g(shù)old linker的系統(tǒng)里,編譯腳本會加入-fuse-ld=gold選項,但這個選項gcc是不支持的。解決辦法是移除該選項,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold。

  1. # QMAKE_LFLAGS+=-fuse-ld=gold

2.2.安裝embedded版Qt

源代碼是一樣的,重新配置就行了。

  1. ./configure -prefix /opt/qt-4.8.3-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/opt/tslib-1.0/include -L/opt/tslib-1.0/lib
  2. make
  3. make install

配置選項要根據(jù)自己的硬件選取,這樣編譯出來的庫文件才會比較小。裝好后把目錄下的imports、lib、mkspecs 、plugin文件夾拷到開發(fā)板上的/opt/Qt目錄下,目錄隨便,和環(huán)境變量里的一致就行。然后配置開發(fā)板的環(huán)境變量,讓他能找到Qt。

  1. export set QTDIR=/opt/Qt
  2. export set QPEDIR=/opt/Qt
  3. export set LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
  4. export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
  5. export set QWS_SIZE=800x480
  6. export set QWS_DISPLAY="LinuxFb:mmWidth80:mmHeight120:0"
  7. export set QWS_DISPLAY="LinuxFB:/dev/fb0"
  8. export set QT_PLUGIN_PATH=$QTDIR/plugins/
  9. export set QWS_KEYBOARD="TTY:/dev/tty1"
  10. export set QWS_MOUSE_PROTO="TSLIB:/dev/event4"
  11. export PATH=$QTDIR/bin:$PATH

3.安裝Qt Creator

Qt Creator是一個開發(fā)Qt程序的IDE,當然也可以完全用命令行進行開發(fā),個人習慣而已。下載地址還是http:///downloads,選擇下面的Qt Creator 2.6.0 for Linux/X11 32-bit,如果是64位系統(tǒng),選擇64位版本。下載得到qt-creator-linux-x86-opensource-2.6.0.bin,運行安裝即可。

  1. ./qt-creator-linux-x86-opensource-2.6.0.bin

裝好后配置qmake,進入工具->選項->構(gòu)建和運行->Qt 版本,添加上面裝好的X11和arm版的qmake,qmake在各自的bin文件夾里,結(jié)果如下圖。 Qt_Version 添加交叉編譯工具鏈GCCE。 Qt_gcc 確定,至此配置完成,接下來我們來測試一下。

4.Hello Qt

新建文件或工程->Qt Gui 應用->下一步,選上Embedded Linux,在詳情里把x11的去掉(x11是PC上的),如下圖。 Hello_Qt 后面的保持默認就行了。完成后打開界面文件,添加一個Hello Qt的Label,構(gòu)建->運行。 Hello_Qt_x11 在左下角切換到Embedded Linux版本,構(gòu)建,復制編譯好的Hello_Qt文件到開發(fā)板,運行./Hello_Qt出錯:

QWSSocket::connectToLocalFile could not connect:: Connection refused
No Qt for Embedded Linux server appears to be running.
If you want to run this program as a server,
add the "-qws" command-line option.

按照提示添加-qws再次運行。

  1. ./Hello_Qt -qws

成功,查了一下,原來Qt的運行需要有一個Qt的服務進程,添加-qws后就是把當前Qt程序當作server了。 至此,Qt移植全部完成了。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本不卡一本二本三区| 国产精品视频一级香蕉| 中文字幕免费观看亚洲视频| 伊人国产精选免费观看在线视频| 在线观看视频国产你懂的| 亚洲一区二区欧美激情| 精产国品一二三区麻豆| 久久机热频这里只精品| 亚洲欧洲在线一区二区三区| 精品人妻av区波多野结依| 五月综合激情婷婷丁香| 国产在线一区中文字幕| 日本欧美一区二区三区高清| 91人妻人人澡人人人人精品| 不卡免费成人日韩精品| 福利视频一区二区在线| 日本女人亚洲国产性高潮视频| 国内外免费在线激情视频| 清纯少妇被捅到高潮免费观看| 99久久婷婷国产亚洲综合精品| 日韩在线视频精品中文字幕| 日韩中文字幕欧美亚洲| 亚洲成人久久精品国产| 加勒比人妻精品一区二区| 91福利视频日本免费看看| 尹人大香蕉中文在线播放| 亚洲精品小视频在线观看| 激情三级在线观看视频| 日韩一区二区三区18| 出差被公高潮久久中文字幕| 五月情婷婷综合激情综合狠狠| 日韩精品一区二区一牛| 好吊妞在线免费观看视频| 国产色偷丝袜麻豆亚洲| 国产亚洲成av人在线观看| 在线观看视频日韩精品| 久久精品色妇熟妇丰满人妻91 | 人妻一区二区三区在线| 免费观看潮喷到高潮大叫| 国产大屁股喷水在线观看视频| 国产精品一区日韩欧美|