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

分享

Qt 4.6.0 嵌入式開發(fā)環(huán)境的搭建、移植

 若渴若愚 2011-11-28
Qt:qt-everywhere-opensource-src-4.6.0.tar.gz
嵌入式平臺(tái):2440
arm-linux-gcc:4.1.2,下載(我用4.3.2和4.4.1版本時(shí),移植時(shí)都有段錯(cuò)誤。我把它放在:/usr/local/arm/4.1.2/ 。)

將 qt-everywhere-opensource-src-4.6.0.tar.gz 壓縮包解壓為3份,分別編譯 PC ,嵌入式 x86 和 arm 三個(gè)版本。

1. 編譯 PC 版:
$ ./configure
$ make
# make install

2. 編譯嵌入式x86版:
$ ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
$ make
# make install

編譯安裝PC版中的 qvfb:
$ cd ***/qt-everywhere-opensource-src-4.6.0/tools/qvfb
$ make
# cp ***/qt-everywhere-opensource-src-4.6.0/bin/qvfb /usr/local/Trolltech/QtEmbedded-4.6.0/bin


3. 編譯嵌入式arm版(需要 arm-linux-gcc 的支持):

編譯tslib對(duì)觸摸屏支持:
下載,tslib1.4.tar.gz,解壓后:
$ ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
$ make
# make install

設(shè)置環(huán)境變量,以便編譯時(shí)找到相關(guān)的庫(kù):
$ export CPLUS_INCLUDE_PATH=/usr/local/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/usr/local/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi

配置:
$ ./configure \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs \
-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

配置結(jié)果:
Debug ............... no
Qt 3 compatibility .. no
QtDBus module ....... no
QtConcurrent code.... yes
QtScript module ..... yes
QtScriptTools module yes
QtXmlPatterns module no
Phonon module ....... no
Multimedia module ... yes
SVG module .......... yes
WebKit module ....... no
Declarative module .. no
STL support ......... no
PCH support ......... yes
MMX/3DNOW/SSE/SSE2.. no/no/no/no
iWMMXt support ...... no
IPv6 support ........ yes
IPv6 ifname support . yes
getaddrinfo support . yes
getifaddrs support .. yes
Accessibility ....... yes
NIS support ......... no
CUPS support ........ no
Iconv support ....... no
Glib support ........ no
GStreamer support ... auto
Large File support .. yes
GIF support ......... plugin
TIFF support ........ no
JPEG support ........ plugin (qt)
PNG support ......... yes (qt)
MNG support ......... no
zlib support ........ yes
Session management .. no
Embedded support .... arm
Freetype2 support ... yes
Graphics (qt) ....... linuxfb multiscreen
Graphics (plugin) ...
Decorations (qt) .... styled windows default
Decorations (plugin)
Keyboard driver (qt). tty
Keyboard driver (plugin)
Mouse driver (qt) ... pc linuxtp tslib
Mouse driver (plugin)
OpenGL support ...... no
OpenVG support ...... no
SQLite support ...... qt (qt)
OpenSSL support ..... no
alsa support ........ yes

編譯:$ make

如果出錯(cuò):
/usr/local/arm/4.1.2/bin/../lib/gcc/arm-angstrom-linux-gnueabi/4.1.2/../../../../arm-angstrom-linux-gnueabi/bin/ld: warning: libts-0.0.so.0, needed by /home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_read_raw'
/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_open'
/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_fd'
/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_config'
/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_close'
/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_read'
collect2: ld returned 1 exit status
make[2]: *** [deform] Error 1
make[2]: Leaving directory `/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/demos/deform'
make[1]: *** [sub-deform-make_default] Error 2
make[1]: Leaving directory `/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/demos'
make: *** [sub-demos-make_default-ordered] Error 2

解決辦法:
修改qt-everywhere-opensource-src-4.6.0/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts參數(shù)):
QMAKE_CC = arm-linux-gcc -lts
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts

參考:http://74.125.153.132/search?q=cache:3WzcJeRRj4sJ:nckuhuahua.pixnet.net/blog/post/30066956+libQtGui.so:+undefined+reference+to+%60ts_read%27&cd=3&hl=en&ct=clnk&client=iceweasel-a

添加環(huán)境變量:# export PATH=/usr/local/arm/4.1.2/bin:$PATH

安裝:# make install-strip

安裝完成后,在 /usr/local/Trolltech 目錄中有三個(gè)文件夾:Qt-4.6.0、QtEmbedded-4.6.0、QtEmbedded-4.6.0-arm。

測(cè)試嵌入式 x86 :
$ source ~/.setenv-qt-x86.sh
$ qvfb -width 800 -height 600 &
$ /usr/local/Trolltech/QtEmbedded-4.6.0/demos/books/books -qws

4、編寫環(huán)境變量設(shè)置文件(方便不同環(huán)境切換):

PC 機(jī)的~/.bashrc 中添加:
export PATH=$PATH:/usr/local/arm/4.1.2/bin

~/.setenv-qt-x11.sh(對(duì)應(yīng)于PC版Qt):
PATH=/usr/local/Trolltech/Qt-4.6.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.0/lib:$LD_LIBRARY_PATH
CPLUS_INCLUDE_PATH=

~/.setenv-qt-x86.sh:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.6.0
PATH=/usr/local/Trolltech/QtEmbedded-4.6.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.6.0/lib:$LD_LIBRARY_PATH

~/.setenv-qt-arm.sh:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.6.0-arm
PATH=/usr/local/Trolltech/QtEmbedded-4.6.0-arm/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.6.0-arm/lib:$LD_LIBRARY_PATH
CPLUS_INCLUDE_PATH=/usr/local/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/usr/local/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi:$CPLUS_INCLUDE_PATH

5、移植
將 PC 機(jī)上 /usr/local/Trolltech/QtEmbedded-4.6.0-arm/lib 中的庫(kù)復(fù)制到2440的 /usr/local/Trolltech/QtEmbedded-4.6.0-arm/lib(對(duì)應(yīng)目錄復(fù)制)。

將 PC 機(jī)上 /usr/local/tslib 中的庫(kù)復(fù)制到2440的 /usr/local 。

如果運(yùn)行時(shí)還缺少其他的庫(kù),復(fù)制方法相同。

為支持觸摸屏,開機(jī)自動(dòng)設(shè)置環(huán)境變量,在2440的 /etc/profile中追加:
export LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export TSLIB_ROOT=/usr/local/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

注:可用$ cat /dev/input/event0 測(cè)試觸摸屏

取消/usr/local/etc/ts.conf中的第一個(gè)注釋:
# module_raw input (去掉#,并且該行頂格)

運(yùn)行 /usr/local/bin/ts_calibrate 校正觸摸屏。

6、程序編譯:
PC版:
$ make distclean
$ source ~/.setenv-qt-x11.sh
$ qmake
$ make

arm 版:
$ make distclean
$ source ~/.setenv-qt-arm.sh
$ qmake
$ make

參考:
http://blog./gurongjiang/352778/Message.aspx


Fedora12下搭建Qt Creator的ARM開發(fā)環(huán)境 并 移植Qt4.6.2到Micro2440(一)



Fedora12下搭建Qt CreatorARM開發(fā)環(huán)境 移植Qt4.6.2Micro2440(一)

參考:

環(huán)境:虛擬機(jī)Fedora12(建議安裝Vmware Tools,詳細(xì)安裝方法參照Vmware幫助文檔),USB串口,minicom終端。(minicom經(jīng)常打不開ttyUSB0設(shè)備,我的解決方法是,打不開時(shí)就將USB串口移除,運(yùn)行minicom,然后再接上USB串口,此時(shí)運(yùn)行minicom一般都能打開設(shè)備)

軟件準(zhǔn)備:
http://qt./downloads-cn下載最新版的軟件包,當(dāng)前是:

用于 Linux/X11 32 Qt Creator 1.3.1 二進(jìn)制軟件包qt-creator-linux-x86-opensource-1.3.1.binhttp://qt./downloads/qt-creator-binary-for-linux-x11-32-bit

用于嵌入式 Linux Qt 庫(kù) 4.6.2qt-everywhere-opensource-src-4.6.2.tar.gzhttp://qt./downloads/embedded-linux-cpp

http://hi.baidu.com/jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html下載arm920t-eabi.tgz(即arm-linux-gcc-4.1.2)(http:///downloads/toolchains/arm920t-eabi.tgz

http://www./download.asp下載Root_Qtopia,我用的是友善光盤里的root_qtopia-20100108.tar.gzhttp://www./linux/root_qtopia-20100108.tar.gz

下載tslib1.4,這個(gè)忘了在哪下載的了,網(wǎng)上有很多,有些不能用,大家自己找個(gè)能用的吧。


qt-everywhere-opensource-src-4.6.2.tar.gz 壓縮包解壓為3份,分別編譯 PC ,嵌入式 x86 arm 三個(gè)版本。

我在root目錄下建立tmp文件夾,將qt-everywhere-opensource-src-4.6.2.tar.gz直接解壓后復(fù)制2分,分別命名為pcx86、arm。


1. 編譯 PC 版:
進(jìn)入pc目錄
#./configure
# gmake
# gmake install
安裝過程比較長(zhǎng),沒有碰到過錯(cuò)誤。

2. 編譯嵌入式x86版:
進(jìn)入x86目錄
# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
# gmake
# gmake install
安裝過程比較長(zhǎng),沒有碰到過錯(cuò)誤。

編譯安裝PC版中的 qvfb
進(jìn)入pc/tools/qvfb/目錄
#make
編譯完畢,將pc/bin目錄下的qvfb文件復(fù)制到/usr/local/Trolltech/QtEmbedded-4.6.2/bin目錄。

3. 編譯嵌入式arm版(需要 arm-linux-gcc 的支持):
使用友善自帶的ARM-Linux GCC 4.3.2編譯完了,程序移植到開發(fā)板上后,出現(xiàn)Segmentation Fault錯(cuò)誤,按原文,使用4.1.2正常。

直接將arm920t-eabi.tgz解壓縮到根目錄,不可以像文章中說的那樣“我把它放在:/usr/local/arm/4.1.2/ ”,最起碼我放過去后出錯(cuò)了。
把編譯器路徑加入系統(tǒng)環(huán)境變量,運(yùn)行命令:
#gedit /root/.bashrc
編輯/root/.bashrc文件,在最后一行加上 export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH


編譯tslib對(duì)觸摸屏支持:
下載,tslib1.4.tar.gz,解壓后:
# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
# make
# make install
我下載的包解壓后沒有configure文件,需要運(yùn)行autogen.sh后才能生成。

設(shè)置環(huán)境變量,以便編譯時(shí)找到相關(guān)的庫(kù):
# export CPLUS_INCLUDE_PATH=/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++:/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++/arm-none-linux-gnueabi
# export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH

修改qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts參數(shù)):
QMAKE_CC                = arm-linux-gcc -lts
QMAKE_CXX               = arm-linux-g++ -lts
QMAKE_LINK              = arm-linux-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-g++ -lts
這一步必須有,不然肯定出錯(cuò)。

配置:
必須加上“-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm ”參數(shù), 不然安裝后不在QtEmbedded-4.6.2-arm文件夾下,而是覆蓋了QtEmbedded-4.6.2。
# ./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs \
-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

上面劃掉的藍(lán)色內(nèi)容,可以不要的,這樣編輯也不會(huì)出錯(cuò)(虛擬機(jī)搞壞了,不得已重裝,配置參數(shù)時(shí)忘了干上面的工作了,結(jié)果發(fā)現(xiàn)沒出錯(cuò))。

關(guān)于配置參數(shù),參照一下這篇文章吧,可以用configure -embedded –help查看。

http://www./blog/?p=582

如果你放棄配置,則使用命令:# gmake confclean

編譯:# gmake

安裝:# gmake install

安裝完成后,在 /usr/local/Trolltech 目錄中有三個(gè)文件夾:Qt-4.6.2、QtEmbedded-4.6.2、QtEmbedded-4.6.2-arm。

4、移植
我是通過NFS啟動(dòng)的系統(tǒng),具體操作可以參照友善的手冊(cè),在http://www./download.asp有下載,在第5.5.3節(jié)通過NFS啟動(dòng)系統(tǒng)。

Fedora12  /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib 中的所有文件復(fù)制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib目錄中(對(duì)應(yīng)目錄復(fù)制,相當(dāng)于復(fù)制到了開發(fā)板對(duì)應(yīng)目錄中),其實(shí)需要的時(shí)候可以裁剪,看原文吧。

Fedora12  /usr/local/tslib 中的庫(kù)復(fù)制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local中。即將/usr/local/tslib下的所有文件復(fù)制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local文件夾下。

如果運(yùn)行時(shí)還缺少其他的庫(kù),復(fù)制方法相同。也可以使用arm-angstrom-linux-gnueabi-readelf -a 程序名 | grep "Share",命令查看需要哪些共享庫(kù),一起復(fù)制過去。

為支持觸摸屏,開機(jī)自動(dòng)設(shè)置環(huán)境變量,在2440 /etc/profile中追加:
export LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH                                                  
export TSLIB_ROOT=/usr/local/lib    
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

取消/usr/local/etc/ts.conf中的第一個(gè)注釋:
# module_raw input (去掉#,并且該行頂格)
我編輯時(shí)沒有“#

啟動(dòng)Micro2440運(yùn)行 /usr/local/bin/ts_calibrate 校正觸摸屏。

到此Qt4.6.2的移植暫告一段落,移植還沒有完,此時(shí)如果在開發(fā)板上運(yùn)行Qt4.6.2-arm編譯的程序,則會(huì)出現(xiàn)“relocation error: /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference”錯(cuò)誤。

今天晚了,明天繼續(xù)奉上……

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩国产黑人一区| 黄片免费观看一区二区| 国产一区二区不卡在线播放| 91在线播放在线播放观看| 在线日韩中文字幕一区| 欧美一本在线免费观看| 亚洲国产成人精品一区刚刚| 不卡视频在线一区二区三区| 成人午夜视频精品一区| 午夜精品一区二区av| 熟女体下毛荫荫黑森林自拍| 黄片在线免费看日韩欧美| 91精品蜜臀一区二区三区| 国产又粗又长又大的视频| 欧美加勒比一区二区三区| 欧美综合色婷婷欧美激情| 麻豆亚州无矿码专区视频| 国产香蕉国产精品偷在线观看| 老司机精品福利视频在线播放| 中文字幕精品一区二区三| 亚洲一区二区三区熟女少妇| 91日韩欧美在线视频| 国产成人高清精品尤物| 精品国产亚洲一区二区三区| 色小姐干香蕉在线综合网| 亚洲一区二区三区四区| 不卡中文字幕在线视频| 亚洲精品蜜桃在线观看| 日本午夜一本久久久综合| 丰满人妻一二三区av| 少妇在线一区二区三区| 九九热精彩视频在线播放 | 99热中文字幕在线精品| 一区二区三区日韩在线| 日本一品道在线免费观看| 五月天丁香亚洲综合网| 人妻巨大乳一二三区麻豆| 欧美日韩国产亚洲三级理论片| 亚洲欧美日韩综合在线成成| 国产av精品高清一区二区三区| 久久久精品区二区三区|