(转载)symbian使用arm5编译器

来源:互联网 发布:unity3d 桌面精灵 编辑:程序博客网 时间:2024/06/05 21:05

原来是gcc编译的工程,完成后被要求添加第三方库,但是第三方只提供arm5的库,不肯提供gcc的。

 下载RVCT22,CSDN提供很多免费版的,然后按照下面文章设置就可以了,第一篇就够了,第二篇没用。



转载自:http://hi.baidu.com/71167609/blog/item/959b193ded7d51d69e3d6233.html

Carbide C++使用ARM编译器编译
2010-12-08 15:25

       使用Carbide C++开发Symbian平台上的应用时,编译到真机上一般使用GCCE编译器,因为Carbide C++自带了GCCE编译器。Carbide C++的编译选项中也提供了ARMV5选项,如果直接选择这个选项来编译真机程序,会失败,因为Carbide C++本身没有带RVCT编译器。RVCT是Symbian平台的收费编译器,生成的文件,相对于免费的GCCE,性能更优,体积更小,对代码的检查也更严格。但是RVCT价格也很昂贵,普通开发者一般难以承受。网上流传有RVCT编译器的破解版本,但是使用要小心,如果使用破解版,再去使用快速签名,可能会带来官司。

       使用破解版RVCT编译器的步骤如下:

       1 下载RVCT的破解包。

       2 使用破解包中自带的patch程序patchRVCT目录下的所有exe。

       3 运行keygen.exe,生成license.dat。

       4 设置两个环境变量:

         LM_LICENSE_FILE 变量值是license.dat的完整路径(注意是完整的包含路径的文件名,不是目录)。

         PATH中添加RVCT根目录。

        5 在命令行中运行armcc --vsn就可以了,这个时候就可以在Carbide中选择ARMV5编译了。

        常见问题:

        1 提示RVCT0_0.h No such file or directory。一般是因为工程没有重新导入,添加了RVCT编译器后,需要重新import 工程文件。

        2 重新导入后,还是报错,这个时候,需要Clean一下(首先需要在Carbide C++-》Prefernces->Carbide C++->Build->SBSV1中把Clean Level设置成Level 2)。



基于RVCT编译器的symbian平台搭建(完成版)

分类: Symbian Symbian 1257人阅读 评论(0) 收藏 举报

基于RVCT编译器的symbian平台搭建(完成版) 

rvct是symbian平台的收费编译器,相比于免费的gcce,性能更优,而且生成的文件小的多。 rvct价格昂贵最低也要五六万,所以开发成本有限的小公司只能选择破解。 但请注意,如果你的软件要发布,要express signed,最好别用破解的rvct,否则小心吃官司。

 

下面就是破解rvct的全部步骤

 

一.rvct编译器

1.下载crack包

2. patch 当前目录下的所有的exe(注意这里patch.exe右键属性里把兼容性设置为"用兼容模式运行win98",才能一个个选择文件.

3.运行keygen.exe,生成license.dat,注意电脑当前时间要准确,不然license可能出错

4.设置两个环境变量

      LM_LICENSE_FILE   变量值为rvct2.2的license的路径。

     PATH  值为rvct2.2根目录

5. 在命令行模式运行armcc --vsn 就OK了。这里可能会碰到错误信息“ Cannot obtain license for Compiler (feature compiler) with license version >= 2.2”, 解决办法是重新patch,重新生成license.dat。若还不行,就是你电脑有“未来”的文件,比如当前时间是2008.12.31,而硬盘里能找出很多2009年的文件,也会导致license出错。可用touchpro批量改时间戳,改完再重新生成license。

 

carbide命令行编译工程:

cd group bldmake bldfiles abld build armv5 urel makesis yourproject.pkg signsis yourproject.sis yourproject.sisx **.cer **.pem 后面2个是钥匙。

3. rvct命令行可运行,在carbide v1.3却始终不行,以为是日期超前或carbide版本不对,折腾了一天多,回头翻“ARMV5 build targets”文档点击进入,找到了原因,rvct 2.2 build 435只支持到symbian os v9.2,v9.3需要rvct2.2 build 559, 所以只能在symbian v9.1用破解的rvct,因为总不可能要arm技术人员帮你升级吧...

二.s60下调试程序

5.armv5下编译生成的lib应该在epoc32/release/armv5/lib,而现在都生成在epoc32/release/armv5/udeb里。   解决方法: testlive555.mmp里LIBRARY      groupsock.lib改成STATICLIBRARY      groupsock.lib, 即可解决

6. 无法生成usageenvironment.lib, 解决办法:头文件冲突,groupsock.mmp里去掉SYSTEMINCLUDE          /epoc32/include/libc/sys  

7. ctime,EAGAIN未定义,而mmp里确实有include,解决办法:可能是头文件冲突,把SYSTEMINCLUDE    /epoc32/include/stdapis移到最前面,问题解决。

8. live555库已经调通了,mpeg4解码库还剩几个问题,原因应该是不同编译器宏定义不一样

9. 当一个工程.c和.cpp文件混在一起时容易出问题。rvct用c++规则编译c程序导致很多问题,统一都用cpp后 编译通过.

10.mpeg4解码库编译没错却没有生成lib,解决办法: mmp尾部加上

  #ifdef ENABLE_ABIV2_MODE   DEBUGGABLE   #endif

至此程序在s60 SDK下已经调通并生成sis,下面要用移植到UIQ 3.0 SDK上

三.uiq3.0下调试程序

对于不同平台和SDK之间程序移植所出现的错误,大体分为五种,没什么复杂的属体力活。

1. mmp中没有包含SYMSTEMINCLUDE

2. mmp中SYMSTEMINCLUDE顺序不对,造成冲突

3. 引起头文件重复,造成冲突

4. 指定路径下不存在该头文件

5. 头文件中不存在你要的函数声明,从别的地方拷过来




原创粉丝点击