(原创)ubuntu10.10编译x86-qtopia(x86-qtopia)(ubuntu10.10)(友善之臂)
来源:互联网 发布:js 高德地图 轨迹 编辑:程序博客网 时间:2024/05/17 08:44
(原创)ubuntu10.10编译x86-qtopia(x86-qtopia)(ubuntu10.10)(友善之臂)
摘要:
在linux下,编译qtopia是件很折腾人的事情,因为它要依赖一 些库,但这些库在刚装好的linux系统下都是没有的;本人也是折腾了两周,才算把qtopia编译出来,当屏幕上qvfb里显示出qtopia的桌面时,心情那个激动啊。
介绍:
linux环境:VMware 7+ubuntu10.10
qtopia : 友善mini6410 x86-qtopia-20100420.tar.gz
step1:安装编译qtopia要用到的库
在 友善之臂micro2440 ubuntu 8.04 嵌入式QT开发环境搭建中介绍了编译x86-qtopia的过程,环境搭建是用的离线升级包,里面就包括了一些编译x86-qtopia的库,而且8.04 gcc的版本是3.6.4的,因此编译比较顺利,整个过程只差一个uuid的库,编译了一个包就可以了。
同样的ubuntu10.10也要安装一些库;保证网络是通的,在终端里安装
sudo apt-get -y install x-dev libx11-dev x11proto-xext-dev libxext-dev libqt3-mt-dev uuid uuid-dev
安装完成后,便可以开始了。
在开始编译前,我们一定要学会如何生成build.log,以便出错时,我们能通过查看编译的信息找出错误。
./build 2>&1 |tee qtopiabuild.log
step2:修改源码在gcc 4.4编译下的错误
ubuntu10.10默认的是4.4的编译器,它对语法的要求比3.4的高,下面有一些语法上的错误,需要修改
错误1:
cd libraries/qtopia && make -f Makefilemake[4]: 正在进入目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia'make[5]: 正在进入目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia'g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -fPIC -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"qpe\" -DQTOPIA_TRTARGET=\"libqpe\" -DQT_NO_DEBUG -I/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ -I. -Ihttp://www.cnblogs.com/../include/qtopia/private -Ihttp://www.cnblogs.com/../pics/qpe -Ihttp://www.cnblogs.com/../include -I/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Ihttp://www.cnblogs.com/../include/qtopia/private/ -I.moc/release-shared/ -o .obj/release-shared/vobject.o backend/vobject.cppbackend/vobject.cpp: In function ‘VObject* addGroup(VObject*, const char*)’:backend/vobject.cpp:419: error: invalid conversion from ‘const char*’ to ‘char*’backend/vobject.cpp: In function ‘void writeEncString(OFile*, const char*, bool)’:backend/vobject.cpp:1111: warning: suggest parentheses around ‘&&’ within ‘||’backend/vobject.cpp: In function ‘bool includesUnprintable(VObject*, bool)’:backend/vobject.cpp:1168: warning: suggest parentheses around ‘&&’ within ‘||’backend/vobject.cpp:1169: warning: suggest parentheses around ‘&&’ within ‘||’make[5]: *** [.obj/release-shared/vobject.o] 错误 1make[5]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia'make[4]: *** [all] 错误 2make[4]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia'make[3]: *** [sub-libraries-qtopia] 错误 2make[3]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src'make[2]: *** [install] 错误 2make[2]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src'make[1]: *** [install] 错误 2make[1]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia'/bin/rm: 无法删除 “qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/lib/fonts/helvetica_*”: 没有那个文件或目录tar: qtopia-2.2.0-FriendlyARM/qtopia/image:无法 chdir: 没有那个文件或目录tar: Error is not recoverable: exiting now
解决办法:
主要用strrchr函数时,从类型‘const char*’到类型‘char*’的转换无效,新版本g++不支持报错了。
修改/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia/backend/vobject.cpp:419行
char *dot = strrchr(g,'.');
为
char *dot = (char*)strrchr(g,'.');
将build脚本中的 “rm -fr qtopia-2.2.0-FriendlyARM” 和 “tar xfvz qtopia-2.2.0.tar.gz” 注释掉,然后再
./build
错误2:
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -fPIC -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"wavplugin\" -DQTOPIA_TRTARGET=\"libwavplugin\" -DQT_NO_DEBUG -I/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ -I. -Ihttp://www.cnblogs.com/../3rdparty/libraries/gsm -Ihttp://www.cnblogs.com/http://www.cnblogs.com/include -I/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/wavplugin.o wavplugin.cppwavplugin.cpp: In member function ‘virtual bool WavPlugin::isFileSupported(const QString&)’:wavplugin.cpp:435: error: invalid conversion from ‘const char*’ to ‘char*’make[6]: *** [.obj/release-shared/wavplugin.o] 错误 1make[6]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin'make[5]: *** [all] 错误 2make[5]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin'make[4]: *** [sub-plugins-codecs-wavplugin] 错误 2make[4]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src'make[3]: *** [sub-src-components_pro] 错误 2make[3]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src'make[2]: *** [install] 错误 2make[2]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src'make[1]: *** [install] 错误 2make[1]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia'/bin/rm: 无法删除 “qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/lib/fonts/helvetica_*”: 没有那个文件或目录tar: qtopia-2.2.0-FriendlyARM/qtopia/image:无法 chdir: 没有那个文件或目录tar: Error is not recoverable: exiting now
解决办法:
修正/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin/wavplugin.cpp:435行
char *ext = strrchr( path.latin1(), '.' );
改为
char *ext = (char*)strrchr( path.latin1(), '.' );
再build,终于通过了。
当然,你也可以像(整理)ubuntu10.10安装低版本的编译器(低版本)(gcc)(ubuntu)中介绍的那样,安装低版本的编译器,大家可以试试。
注意,改完代码重新编译时,需要将build脚本中的 “rm -fr qtopia-2.2.0-FriendlyARM” 和 “tar xfvz qtopia-2.2.0.tar.gz” 注释掉。
结语:
其实,在x86编译出错后,我就开始试着编译arm版的qtopia,arm-qtopia、arm-extended、qt/e-4.7都编译通过了,维独x86的通不过,后来怀疑是不是编译器的版本问题,为了解决这个问题只好开始看build.log,根据build.log中的提示,总算是把一条条错误给排除了。
附件是buildlog.tar.gz
参考:
ubuntu 9.1 下搭建Qt Creator的ARM开发环境
Ubuntu9.10编译Qtopia问题
» 博主下一篇:(原创)如何用自带AD实现触摸屏转换(触摸屏)(AD转换)
- (原创)ubuntu10.10编译x86-qtopia(x86-qtopia)(ubuntu10.10)(友善之臂)
- mini2440编译x86-qtopia(x86-qtopia)(友善之臂)
- [整理]ubuntu10.10编译TQ2440的x86-qtopia-2.2.0编译问题解决精简版
- [整理]ubuntu10.10编译TQ2440的x86-qtopia-2.2.0具体问题总结及原因分析
- ubuntu10.10编译TQ2440的x86-qtopia-2.2.0具体问题总结及原因分析
- mini2440上qtopia应用程序开发步骤(x86-qtopia版本)
- ubuntu10.10编译qtopia-2.2.0 问题总结及分析
- FriendlyARM-mini2440-X86-qtopia的编程步骤(一)
- FriendlyARM-mini2440-X86-qtopia的编程步骤(二)
- Ubuntu10.04下载Android-x86(froyo-x86)源代码步骤
- x86-qtopia应用程序编写
- qt(qtopia)之编译出错处理
- Fedora14安装x86-qtopia和arm-qtopia
- 友善之臂移植qtopia系统
- 在Fedora7上编译qtopia-2.2.0 x86版
- Qtopia-2.2.2在x86平台编译--错误修改总汇
- Qtopia-2.2.2在x86平台编译--错误修改总汇
- qtopia-x86安装配置及编程方法
- 硬件大小端
- 抛弃4S店:快修店终结汽车售后暴利?
- Ubuntu 查看和杀死进程
- 论文要义
- swig封装c++至python可调用
- (原创)ubuntu10.10编译x86-qtopia(x86-qtopia)(ubuntu10.10)(友善之臂)
- Linux内核开发之阻塞/非阻塞IO----等待对列
- Ubuntu 12.04的配置
- Qt/Qte-4.7.2开发环境搭建及Micro2440的移植(笔记)
- 如何写摘要
- 判断一个数是否2的次幂
- Linux内核开发之阻塞非阻塞IO----轮询操作
- RDF
- Java线程:什么是线程