qt交叉编译环境搭建方法
(一)準備工作
1、下載最新版本的Qt?4.7.2:?
http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.2.tar.gz
2、安裝交叉編譯器4.3.3或其它版本
3、編譯tslib-1.4.1.tar.bz2,這個東西是觸摸屏庫,編譯QT4.7.2時要用到,先拷貝到一個目錄,然后用tar?xfvj?tslib-1.4.1.tar.bz2進行解壓縮,進入tslib-1.4.1這個目錄,運行./build就可以編譯了。編譯完之后,會生成一個__install的文件夾,里面有兩個文件夾,分別是:inclue?和lib,后面編譯Qt的時候會用到。編譯完之后,我把它更改名稱為mytslib,并且拷貝到/opt/qt-4.7目錄下。這樣tslib庫的絕對路徑是:/opt/qt-4.7/mytslib/lib了,而tslib包含文件夾得絕對路徑是:/opt/qt-4.7/mytslib/include
(二)編譯Qt?4.7.2
把qt-everywhere-opensource-src-4.7.2.tar.gz拷貝到/opt/qt-4.7里面。
用?tar?zxvf?qt-everywhere-opensource-src-4.7.2.tar.gz解壓。
cd?/opt/qt-4.7/qt-everywhere-opensource-src-4.7.2.tar.gz/目錄。
然后新建一個配置shell文件。我建立一個叫config.sh的文件。然后,把
./configure?-prefix?/opt/EmbedSky/qt-4.7/qtlib?–embedded?arm?-release?-opensource?-fast?-no-accessibility?-no-scripttools?-no-mmx?-no-multimedia??-no-svg?-no-webkit?-no-3dnow?-no-sse?-no-sse2?-silent?-qt-libpng?-qt-libjpeg?-no-libmng?-no-libtiff?-no-multimedia?-make?libs?-nomake?tools?-nomake?examples?-nomake?docs?-nomake?demo?-no-nis?-no-cups?-no-iconv?-no-dbus?-no-openssl?-xplatform?qws/linux-arm-g++?-little-endian?-qt-freetype?-depths?16,18?-qt-gfx-linuxfb?-no-gfx-transformed?-no-gfx-multiscreen?-no-gfx-vnc?-no-gfx-qvfb?-qt-kbd-linuxinput?-no-glib?-qt-mouse-tslib?-I?/opt/EmbedSky/qt-4.7/mytslib/include??-L?/opt/EmbedSky/qt-4.7/mytslib/lib?
拷貝到config.sh文件里面并保存。然后在/opt/EmbedSky/qt-4.7/?qt-everywhere-opensource-src-4.7.0-beta2下執行./config.sh。就可以進行Qt4.7?Beta?II的裁剪了。上面的配置信息是可以根據需要進行修改的,詳細配置信息可以參考http://www.qtcn.org/bbs/read.php?tid=19214。
執行上面腳本后,在/opt/EmbedSky/qt-4.7/目錄下建立一個qtlib目錄。用來存放編譯后生成的庫文件,-prefix?/opt/EmbedSky/qt-4.7/qtlib這個參數的意思是把庫文件拷貝到/opt/EmbedSky/qt-4.7/qtlib目錄下。-I?/opt/EmbedSky/qt-4.7/mytslib/include??-L?/opt/EmbedSky/qt-4.7/mytslib/lib?一定要正確,就是第一大步編譯的那個tslib,還記得嗎?現在用上他了。然后執行命令make?,完畢后再執行make?install。我的電腦編譯過程要一個小時左右。那么在/opt/EmbedSky/qt-4.7/qtli?就生成了Qt?4.7?Beta?II在arm上運行的庫了。把它拷貝到文件系統就OK了。拷到哪里呢?這里可以參考天嵌的手冊。不過這里還是說下吧。我用的是天嵌光盤自帶的Qt?4.5?文件系統。例如我把文件系統解壓到了/opt/EmbedSky/目錄下。并且把文件系統文件夾的名稱改為了root_nfs。那么進入/opt/EmbedSky/root_nfs/opt/qt-4.5/目錄。然后rm?lib?–R刪除lib目錄,再rm?plugins?–R?刪除plugins目錄。把剛才qtlib文件夾里面的lib和plugins拷貝到qt-4.5目錄下。
cp?/opt/EmbedSky/qt-4.7/qtlib/lib??/opt/EmbedSky/root_nfs/opt/qt-4.7/????
cp?/opt/EmbedSky/qt-4.7/qtlib/plugins?/opt/EmbedSky/root_nfs/opt/qt-4.7/。
最后,把/opt/EmbedSky/root_nfs/opt下的qt-4.5更改名稱為?qt-4.7,操作是:mv?qt-4.5?qt-4.7。現在在更改一下文件系統/bin/下的qt4文件,更改如下:
#!/bin/sh
echo?Start?Qt-4.7?>?/dev/tq2440_serial0
export?set?TSLIB_TSDEVICE=/dev/event0
export?set?TSLIB_CALIBFILE=/etc/pointercal
export?set?TSLIB_CONFFILE=/etc/ts.conf
export?set?TSLIB_PLUGINDIR=/lib/ts
export?set?HOME=/root
export?set?QTDIR=/opt/qt-4.7
export?set?QPEDIR=/opt/qt-4.7
export?set?QTDIR1=/sbin
export?set?QWS_DISPLAY="LinuxFB:/dev/fb0"
export?set?QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export?set?QWS_KEYBOARD="TTY:/dev/tty1"
export?set?QWS_MOUSE_PROTO="TSLIB:/dev/event0"
export?set?QT_PLUGIN_PATH=$QTDIR/plugins/
export?set?QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export?set?PATH=$QPEDIR/bin:$PATH
export?set?LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH
if?[?-f?/etc/pointercal?]??
;?then
????#ts_calibrate????????
????????/qml/qml?-qws
????????#?>?/dev/null?2>/dev/null
else
????????ts_calibrate
????????/qml/qml?-qws
????????$QPEDIR/bin/calculator?-qws
????????#?>??
/dev/null?2>/dev/null
fi
下面這幾行也可以用自己第一步編譯的tslib,這里我偷懶,直接用文件系統里面的。哈哈
export?set?TSLIB_TSDEVICE=/dev/event0
export?set?TSLIB_CALIBFILE=/etc/pointercal
export?set?TSLIB_CONFFILE=/etc/ts.conf
export?set?TSLIB_PLUGINDIR=/lib/ts
(三)測試Qt?4.7?Beta?II?是否可用
怎么測試Qt?4.7?Beta?II的編譯已經成功了呢?Qt4.7有QML功能。寫個打開QML的程序,然后在程序里面調用該QML就知道Qt4.7是否可用了。在附件里面有我的工程。可以拿去編譯一下。把這個工程放到/opt/EmbedSky/root_nfs下編譯。然后nfs加載。就可以運行QML工程了。我的工程很簡單。就是調用一個HELLO?WORLD?qml腳本。更加炫的效果你去QT?example里面的declarative文件夾里面找。
轉載于:https://blog.51cto.com/prothesman/1411562
總結
以上是生活随笔為你收集整理的qt交叉编译环境搭建方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java例程练习(一维数组)
- 下一篇: erlang 编译之 to_core