作者godman362 (青)
看板NUU_CSIE
標題[筆記] QT-embedded-4.5.3 移植
時間Sat Dec 26 17:13:11 2009
好不容易花了三天的時間,把QT給編好了
編其實沒那麼難,難就難在要把它cross platform
以後做到嵌入式系統的學弟妹們啊,應該很有機會玩這個
不過印象中,除了我,還有黃信富學長(李國川老師第一屆學生)之外
系上好像沒有其他人有玩過這塊
趁現在剛弄好,記憶還深刻的時候把筆記打下來
有興趣的學弟妹可以私底下找我討論一下
本文開始:
1.下載原始碼
wget
http://download.qt.nokia.com/qt/source/qt-embedded-linux-opensource-src-4.5.3.tar.gz
2.解壓縮
tar zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
3.修改mkspecs/qws/linux-arm-g++/qmake.conf
# modifications to g++.conf
QMAKE_CC = arm-linux-gcc
QMAKE_CXX = arm-linux-g++
QMAKE_LINK = arm-linux-g++
QMAKE_LINK_SHLIB = arm-linux-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_STRIP = arm-linux-strip
4. 修改 ./src/corelib/io/qfilesystemwatcher_inotify.cpp 條件判斷
//# error "This architecture is not supported. Please talk to
[email protected]"
5.若要編入webkit,修改 ./src/3rdparty/webkit/JavaScriptCore/wtf/AlwaysInline.h
#ifndef ALWAYS_INLINE
//#if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW)
//#define ALWAYS_INLINE inline __attribute__ ((__always_inline__))
//#elif COMPILER(MSVC) && defined(NDEBUG)
//#define ALWAYS_INLINE __forceinline
//#else
#define ALWAYS_INLINE inline
//#endif
#endif
6.進行configure
./configure -embedded arm -qt-zlib -qt-libpng -qt-gif -qt-libtiff -qt-libmng
-qt-libjpeg -qt-freetype -no-openssl
若需要tslib,則如下:
./configure -embedded arm -qt-zlib -qt-libpng -qt-gif -qt-libtiff -qt-libmng
-qt-libjpeg -qt-freetype -no-openssl -qt-mouse-tslib \
-L /home/septemhill/tslib-1.0/tslib/lib \
-I /home/septemhill/tslib-1.0/tslib/include
7.make & make install
其中有些地方需注意,若遇到錯誤為:
libQtWebKit.so: undefined reference to `trunc’
libQtWebKit.so: undefined reference to `lroundf’
libQtWebKit.so: undefined reference to `roundf’
libQtWebKit.so: undefined reference to `lround’
則需修改src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h,其中有一段
#if COMPILER(MSVC) || COMPILER(RVCT)
inline long lround(double num)
{ return static_cast(num > 0 ? num + 0.5 : ceil(num - 0.5)); }
inline long lroundf(float num)
{ return static_cast(num > 0 ? num + 0.5f : ceilf(num - 0.5f)); }
inline double round(double num)
{ return num > 0 ? floor(num + 0.5) : ceil(num - 0.5); }
inline float roundf(float num)
{ return num > 0 ? floorf(num + 0.5f) : ceilf(num - 0.5f); }
inline double trunc(double num)
{ return num > 0 ? floor(num) : ceil(num); }
#endif
直接將巨集的判斷註解掉即可
另外一點,uClibc-0.9.28之前的版本並無支援浮點數
此時只能重新編一套uClibc,且版本為0.9.28以上
筆記打完,拜拜。
--
▁▁
Google 女友|██████████████████▕
搜尋▏
進階搜尋 | 使用偏好
▇▇  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄
搜尋: ⊙所有網頁 ○中文網頁○繁體中文網頁 ○台灣的網頁
所有網頁 約有0項符合女友的查詢結果,以下是第 0項。 共費21年。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.4.2
※ 編輯: godman362 來自: 122.118.4.2 (12/26 17:26)
1F:推 kkyy00066:感謝分享.... 12/26 17:29
2F:→ godman362:另外補充:tslib要自己額外編譯 12/26 18:15
3F:→ godman362:不使用最新的4.6.0是因為tslib目前尚未支援mutlitouch 12/26 18:16
4F:推 hideyourbaby:話說學長移植2.x 你是移植4.x的第一人! (大拇指) 12/26 23:04
5F:→ hideyourbaby:話說可以補一下os跟gcc的版本,造福後人:P 12/26 23:05
6F:→ godman362:應便當學長要求,補上一些資訊 12/27 08:33
7F:→ godman362:os使用ubuntu 9.04,gcc-3.4 ~ 4.1 12/27 08:34
8F:→ godman362:喔打錯,gcc是用4.3 12/27 08:34
9F:→ godman362:3.4那個是編Microwindow 12/27 08:35
10F:→ godman362:另外,目前很多老東西gcc都還要用到2.95或是3.3~3.4 12/27 08:36
11F:→ YiYu1487:QT Honey XD 12/27 13:48
12F:推 jack089452:gcc出到那麼新了?!... 12/27 17:41
13F:→ godman362:ㄇㄉ勒...QT一點都不是Honey 12/27 21:31
14F:→ godman362:gcc早就這麼新了欸....9.04就有了 12/27 21:32
15F:→ jack089452:原來是linux... 12/28 00:39