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. 头文件中不存在你要的函数声明,从别的地方拷过来
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lius1984/archive/2008/06/03/2507104.aspx