看板 NUU_CSIE 關於我們 聯絡資訊
好不容易花了三天的時間,把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 qt-bugs@trolltech.com" 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)
kkyy00066:感謝分享.... 12/26 17:29
godman362:另外補充:tslib要自己額外編譯 12/26 18:15
godman362:不使用最新的4.6.0是因為tslib目前尚未支援mutlitouch 12/26 18:16
hideyourbaby:話說學長移植2.x 你是移植4.x的第一人! (大拇指) 12/26 23:04
hideyourbaby:話說可以補一下os跟gcc的版本,造福後人:P 12/26 23:05
godman362:應便當學長要求,補上一些資訊 12/27 08:33
godman362:os使用ubuntu 9.04,gcc-3.4 ~ 4.1 12/27 08:34
godman362:喔打錯,gcc是用4.3 12/27 08:34
godman362:3.4那個是編Microwindow 12/27 08:35
godman362:另外,目前很多老東西gcc都還要用到2.95或是3.3~3.4 12/27 08:36
YiYu1487:QT Honey XD 12/27 13:48
jack089452:gcc出到那麼新了?!... 12/27 17:41
godman362:ㄇㄉ勒...QT一點都不是Honey 12/27 21:31
godman362:gcc早就這麼新了欸....9.04就有了 12/27 21:32
jack089452:原來是linux... 12/28 00:39