让Symbian SDK使用最新的GCCE进行编译

原址:http://www.cnblogs.com/felixYeou/archive/2009/02/18/1392847.html

GCCE简介

GCCE(GNU Compiler Collection for Embedded)是基于ARM架构的嵌入式编译器,其适用于Symbian OS v9操作系统。Symbian OS v9以前的操作系统经常使用GCC编译器来编译第三方应用程序,并生成目标设备代码,但是GCC通常不允许对整个操作系统进行编译。

GCCE编译器由ARM Ltd的合作伙伴CodeSourcery公司开发,它是一套非常成熟的ARM处理器交叉编译工具链。

为什么要升级GCCE

Symbian OS v.9.1+ SDK使用GCCE CSL Arm交叉编译工具链为目标设备生成代码。然而,SDK中所包含的GCCE编译器非常陈旧,3.4.3版,发布于2004年11月。截止至今天为止,最新版本为4.3.2,发布于2008年。

image

以下几个理由会让您放弃SDK自带的编译器而转为使用新的编译器:

  1. 编译器编译速度变得很快,特别是针对C代码
  2. 代码优化的问题貌似变少了
  3. 编译出来的目标代码变小了(sis文件从1.5M变成1M)
  4. 编译器的bug更少了
  5. 在编译时生成的错误或警告信息更加完整

下面是使用旧版编译器和新版编译器编译SDK Examples后的目标代码大小比较:

Example NameGCC v3.4GCC v4.3
AddressBook48 kb20 kb
BrCtlSampleApp63 kb18 kb
Messaging10 kb7 kb
WebClient33 kb13 kb

动手更新GCCE

第一步:下载最新版GCCE编译器

直接下载地址:这里

如果以上地址无效,请先进入这里,点击以下红框内所示链接:

image

在打开的网页中选择以下地址进行下载:

image

第二步:安装

接下来开始安装,开始傻瓜式的“下一步”,给出几个步骤的截图:

image

image

image

 

 

第三步:替换旧的编译器

注:在进行这一步之前请您对相关文件/文件夹进行备份

删除“x:/Program Files/CSL Arm Toolchain/”下所有文件和文件夹,然后将“x:/Program Files/CodeSourcery/Sourcery G++ Lite/”下所有文件和文件夹复制到“x:/Program Files/CSL Arm Toolchain/”下。

第四步:替换相关Perl脚本和MakeFile文件中的字符串

注:在进行这一步之前请您对相关文件/文件夹进行备份

1、以S60 3rd MR SDK为例,我的SDK安装在“D:/S60/SDK/S60_3rd_MR/”文件夹下,在“"$(EPOCROOT)Epoc32/tools/”文件夹下找到以下几个文件:

  • cl_bpabi.pm
  • cl_gcce.pm
  • ide_cw.pm
  • compilation_config/gcce.mk

在此推荐使用“Search Everything”和“UltraEdit”结合使用,“Search Everything”是一个对磁盘分区表进行分析并查找文件名的软件,速度飞快:

image

 

 

2、查看当前gcc版本,在cmd窗口下进入目录“x:/Program Files/CSL Arm Toolchain/arm-none-symbianelf/bin”,输入“gcc -v”,在最后一行显示当前gcc版本为4.3.2:

image

打开上图的四个文件,将文件内所有“3.4.3”替换成gcc的当前版本“4.3.2”。

第五步:替换其它文件

注:在进行这一步之前请您对相关文件/文件夹进行备份

此步骤将机械地将一些能够在GCC3.4.3下编译通过但在最新版编译器下不能编译通过的文件进行修改,我在这里将文件修改完成并提供下载,具体修改内容请参看“参考文献”中的相关文章。

以下代码的SDK为S60 3rd MR SDK

文件所在路径说明
d32locd.h$(EPOCROOT)Epoc32/include/ 
gcce.h$(EPOCROOT)Epoc32/include/gcce/对此文件进行修改后,请在每一个项目的MMP文件中加入以下行:

SYSTEMINCLUDE     /epoc32/include/libc

libsupc++.ax:/Program Files/CSL Arm Toolchain/arm-none-symbianelf/lib/
x:/Program Files/CSL Arm Toolchain/arm-none-symbianelf/lib/mfloat-abi=softfp/
替换两个文件夹下的文件
division.c工程所在源代码文件夹(/src/)如果你的项目中有整数除法代码,如:
   TInt a, b, c;
   a = 10;
   b = 5;
   c = a / b;

请将此c文件包含到你的工程所在代码中,编译器会自动对此文件进行编译

第六步:移除额外的修饰符

如果在使用GCCE编译代码时产生类似如下错误:

image

就说明代码中存在额外的修饰符,SDK中也存在些许这些错误。什么是额外的修饰符呢?如下红框中既是:

image

只需要把上述红框中的代码移除就能在新的GCCE避免此错误的发生,次写法不会在旧版GCCE 3.4.3中引发编译错误。

参考文献

  1. GCCE
  2. How to use GCCE 4 with Symbian SDKs
  3. GCC 4.2.3 provides some space optimisation
  4. 关于3rd mr和3rd FP1生成的安装包大小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值