作者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