精華區beta 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/simon/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之前的版本並無支援浮點數 若lib所用為此版本之前,則會有找不到「sinf、cosf、logf」等問題 此時只能重新編一套uClibc,且版本為0.9.28以上 筆記打完,拜拜。 -- ▁▁ Google 女友|██████████████████▕搜尋進階搜尋 | 使用偏好 ▇▇  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ 搜尋: ⊙所有網頁 ○中文網頁○繁體中文網頁 ○台灣的網頁 所有網頁 約有0項符合女友的查詢結果,以下是第 0項。 共費21年 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.4.2