mini2440编译x86-qtopia(x86-qtopia)(友善之臂)

在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 Makefile make[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.cpp backend/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] 错误 1 make[5]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia' make[4]: *** [all] 错误 2 make[4]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia' make[3]: *** [sub-libraries-qtopia] 错误 2 make[3]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src' make[2]: *** [install] 错误 2 make[2]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src' make[1]: *** [install] 错误 2 make[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.cpp wavplugin.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] 错误 1 make[6]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin' make[5]: *** [all] 错误 2 make[5]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin' make[4]: *** [sub-plugins-codecs-wavplugin] 错误 2 make[4]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src' make[3]: *** [sub-src-components_pro] 错误 2 make[3]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src' make[2]: *** [install] 错误 2 make[2]:正在离开目录 `/opt/FriendlyARM/mini6410/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src' make[1]: *** [install] 错误 2 make[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QtopiaQt Creator是两个不同的概念。Qtopia是Trolltech公司(现已被Digia收购)为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。而Qt Creator是Qt的集成开发环境(IDE),用于开发Qt应用程序。Qt Creator提供了一套工具和功能,使开发者可以轻松地编写、调试和部署Qt应用程序。所以,QtopiaQt Creator可以说是在不同层面上为Qt开发提供支持的工具和框架。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [QTQT/E,Qtopiaqt creator的联系与区别](https://blog.csdn.net/qq_23329691/article/details/79063908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [各种Qt的区别——QtQt/Embeded,QtopiaQt Designer,Qt Creator](https://blog.csdn.net/xingsongyu/article/details/88028027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值