S60平台的搭建-ZT

ZT:http://blog.csdn.net/dong_chi/archive/2009/11/18/4831699.aspx

 

S60平台的搭建

 

2009-7

 

一、确定你的平台

 

首先要明确自己的平台是什么?

S60 2nd 或之下的可以使用VC6 打上sp3或更高的补丁作为IDE (集成开发环境)或者是visual studio 2005/2003 或者是carbide c++

而S60 3rd 只支持carbide c++和visual studio (必须安装carbide.vs)

 

我试过以下组合

S60_2nd_fp2_sc +vc6.0 sp6   和

S60_3rd_fp1 + carbide c++ 2.0   和

S60_3rd_fp1 + carbide .vs + visual studio 2005 (这个应该没算成功,因为经常出现错误)

当然也可以在同一台机子上搭建多个平台,即是安装多个SDK。但是这样会遇到很多棘手的问题。所以,建议只使用单平台。

 

http://www.forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html 这里可以下载以上两个S60 SDK

http://www.forum.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html 这里可以下载carbide c++ 2.0

http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.vs/ 这里下载carbide.vs

 

二、工具的准备:

 

确定好平台之后接着是准备各种软件,分别是(下面是我使用的版本,如果使用低版本可能会有错,尽量使用高版本):

 

<!--[if !supportLists]-->1、  <!--[endif]-->对于S60_2nd_fp2_sc +vc6.0 sp6 平台:

ActivePerl-5.6.1.635-MSWin32-x86.msi

jdk-1_5_0_03-windows-i586-p.exe

s60_2nd_fp2_sdk_ms_chinese

VC6.0 SP6 (至少要SP3)

 

<!--[if !supportLists]-->2、  <!--[endif]-->对于S60_3rd_fp1 + carbide c++ 2.0平台:

ActivePerl-5.6.1.635-MSWin32-x86.msi

jdk-1_5_0_03-windows-i586-p.exe

S60_3rd_FP1

carbide c++ 2.0(至少1.2)

 

本人推荐使用3rd 版本SDK,目前已有3RD_FP2 和5TH 的SDK ,感兴趣可以下来研究。下载地址:

http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html

 

 

关于扩展包

另外,为了增强SDK 的能力,建议下载扩展包,比如此次项目Funambol 就需要到SyncMLClientAPI 里的各种API函数,必须下载S60_3rd_Ed_SDK_FP1_API_Plug-In_Pack 如何使用稍后第三部分介绍。

http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Plug-ins/Extensions/ 这里有多种扩展包提供下载,请选择适合自己SDK的扩展包。

 

关于版本问题

至于使用各个工具的其他版本我就不清楚最后能否成功了,因为这版本问题也是一个很大的问题,很多的错误也是由于版本的不对应而引发的,所以在选择版本时尽量使用高版本的,上面的只作为一个参考。

请注意:所有工具必须都使用英文版。

 

关于各种工具下载

关于工具资源推荐诺基亚论坛 http://www.forum.nokia.com/ 这里可以下载到很多的免费软件,需要提醒的是它需要你注册一个论坛账户,很简单。不过貌似不注册使用迅雷也可下载。点击下载

<!--[if !vml]--><!--[endif]-->

这时地址栏会出现下载地址

<!--[if !vml]--><!--[endif]-->

将地址拷贝并使用迅雷新建任务即可。最简单就是右击使用迅雷下载。

 

 

三、安装过程及注意事项

 

安装时最好按照上面出现的顺序进行!而且应该安装在默认路径下,即所有工具都在C盘下,不要随便修改安装路径。如果真不想安装在C下,根据其他人的说法是:至少保证全都在一个盘符下!这个我没试过,感兴趣的就去尝试吧!安装时有些工具有提供版本的选择 ,一般选择OEM版。

再重申一次:必须安装在同一个盘符下!!不然会出现很多莫名其妙的问题,并且,SDK的安装路径不能有空格!!!可以参考默认路径

请避免多次重复安装,尽量一次安装ok!

关于安装扩展包

我是这样做的,将第一层压缩包解压,然后得到很多压缩包,那是各种不同应用的API ,选择你需要的那个,比如此次项目所需要的SyncMLClientAPI 找到后解压,然后放到SDK 根目录下的/epoc/include 下

使用时在具体项目里将此路径包含进来即可(通过修改某个具体项目的group 目录下的mmp 文件如下图)。

<!--[if !vml]--><!--[endif]-->

SYSTEMINCLUDE是系统路径

USERINCLUDE是用户路径

 

四、配置

   

将所有工具都安装好之后就是具体配置了,如果你人品好的话你什么也不用做,直接到下一部分去编译你的第一个symbian 程序。但是幸运女神好像并不喜欢我,和我有点疙瘩。

一般来说安装好上述工具之后,打开命令行输入epoc 来检验是否安装成功,如果出现模拟器则表明安装成功,Lucky beggar请跳过此部分;如果没有,则很可能是环境变量的问题。

 

在单平台下:

1、使用S60 2nd +VC6 情况

 

单平台主要就是环境变量的问题,原因很难说,我也不太了解。我自己就碰到了两种情况:在寝室的电脑上所有工具安装完成后即可以使用,没有任何问题;但是在实验室里却是遇到了EPOCROOT environment variable must be capital 的问题,意思是EPOCROOT 必须为大写,可明明就是大写的!这个错误我到现在也没搞明白,有点扯!最后我参考了寝室电脑的系统环境变量的PATH ,把一些没有的加了进去,最后问题解决了!

所以如果你也遇到同样的问题或者模拟器无法启动可以参考以下我提供的环境变量,不保证完全有效。

系统环境变量PATH = C:/Program Files/Common Files/Symbian/Tools;C:/Program Files/CSL Arm Toolchain/bin;C:/Perl/bin;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;C:/Program Files/Java/jdk1.5.0_05/bin;宁多勿少!!黑色部分可能就是原因所在,注意看你的环境变量里是否有这一部分或者是否缺少了什么。

加上用户环境变量(也可以是系统的):

可以手动添加一个用户或系统的环境变量EPOCROOT = /Symbian/8.0a/S60_2nd_FP2_SC (如果是S60_3nd_FP1请自行变通),注意不能有盘符,而且需要反斜杠 / 结尾!不然 会报错。(即是你的SDK 所在的目录)

 

<!--[if !supportLists]-->2、 <!--[endif]-->使用S60 3RD + CARBIDE C++情况

 

首先设置winscw(由于3RD 不支持wins 编译,只支持winscw 编译器,由此也可见不支持VC 的原因) 的环境变量,操作如下图(开始->程序->carbide ->configure environment……),如果你觉得永远也不会用命令行,当然也可以不设置,因为这个设置只对命令行下使用winscw 命令时有效。

<!--[if !vml]--><!--[endif]-->

    Carbide 下的环境设置是针对某个具体工程进行的,具体参考第五部分。

如果出现其他问题可以参考以下环境变量的设置

PATH =

C:/Program Files/Common Files/Symbian/Tools;D:/Perl/bin/;C:/Program Files/Nokia/Carbide.c++ v2.0/x86Build/Symbian_Tools/Command_Line_Tools;C:/Perl/bin;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Program Files/Java/jdk1.5.0_05/bin;c:/Program Files/Microsoft SQL Server/90/Tools/binn/;C:/Program Files/CSL Arm Toolchain/bin;

如果出现WARNING :EPOCROOT does not spectify an existing directory

   

EPOCROOT =

/Symbian/9.2/S60_3rd_FP1/

 

TEMP = TMP =

c:/temp

        

 

五、编译运行你的HelloWorld

 

单平台

<!--[if !supportLists]-->   i.     <!--[endif]-->S60_2nd编译HelloWorldbasic流程(截图使用的是S60_3rd 的,S60_2nd 和它类似)

A、使用命令行编译

<!--[if !supportLists]-->1、<!--[endif]-->启动命令行

<!--[if !supportLists]-->2、<!--[endif]-->输入

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/helloworldbasic/group (反正就是helloworldbasic的group目录)

<!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->3、<!--[endif]-->输入命令 bldmake bldfiles

<!--[if !vml]--><!--[endif]-->

  生成一个abld.bat文件此文件有编译需要的各种工程信息。

4、使用SDK内部命令编译,则输入abld build wins udeb

<!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->5、<!--[endif]-->命令行下输入epoc 将模拟器调出来。

 

B、使用VC6 编译

<!--[if !supportLists]-->1、<!--[endif]-->启动命令行

<!--[if !supportLists]-->2、<!--[endif]--> cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/helloworldbasic/group

<!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->3、<!--[endif]--> 输入命令 bldmake bldfiles

<!--[if !vml]--><!--[endif]-->

  生成一个abld.bat文件此文件有编译需要的各种工程信息。

<!--[if !supportLists]-->4、<!--[endif]-->输入abld makefile vc6,会在

C:/Symbian/8.0a/S60_2nd_FP2_SC/epoc32/BUILD/SERIES60EX/HELLOWORLDBASIC/GROUP/HELLOWORLDBASIC/WINS 下生成vc 工程文件 HELLOWORLDBASIC.DSW

<!--[if !vml]--><!--[endif]-->

 

5、此时可以使用VC6.0来打开该工程了方法和一般的VC工程一样,编译执行会提示输入可执行文件路径,输入

C:/Symbian/8.0a/S60_2nd_FP2_SC/epoc32/release/wins/udeb/epoc.exe 即可看到模拟器

 

<!--[if !supportLists]--> ii.     <!--[endif]-->S60_3rd编译HelloWorldbasic流程

 

<!--[if !supportLists]-->A、    <!--[endif]-->使用命令行编译

1、启动命令行

2、输入

cd C:/Symbian/9.2/S60_3rd_FP1_5/S60Ex/HelloWorldBasic/group (反正就是helloworldbasic的group目录)

<!--[if !vml]--><!--[endif]-->

3、输入命令 bldmake bldfiles

<!--[if !vml]--><!--[endif]-->

  生成一个abld.bat文件此文件有编译需要的各种工程信息。

<!--[if !supportLists]-->5、<!--[endif]-->使用SDK内部命令编译,则输入abld build winscw udeb ,注意黑色部分就是和S60 2ND不一样的地方。

<!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->6、<!--[endif]-->命令行下输入epoc 将模拟器调出来。

 

<!--[if !supportLists]-->B、    <!--[endif]-->使用Carbide c++编译

<!--[if !supportLists]-->1、<!--[endif]-->打开Carbide c++,选择默认workplace 路径,关闭welcome页面

<!--[if !supportLists]-->2、<!--[endif]-->在左边的Project Explorer 区间右击(或File 菜单)选择Import,然后选择导入.INF文件的选项

<!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->3、<!--[endif]-->Next,输入inf 的路径,这里输入HelloWorkBasic的inf 所在的路径

<!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->4、<!--[endif]-->next,选择生成设置(这里选择S60 3rd_fp1  winscw ,也可全选)

<!--[if !vml]--><!--[endif]-->

 

<!--[if !supportLists]-->4、<!--[endif]-->一路Next OK!

<!--[if !supportLists]-->5、<!--[endif]-->Build and run ,OK!

 

 

六、接下来介绍双平台的搭建。不建议

    这和单平台有着很多的相同之处,这里我只讲不同的地方。

    安装完各种工具之后主要有三大部分的工作

<!--[if !supportLists]-->一、<!--[endif]-->设置环境变量

<!--[if !supportLists]-->二、<!--[endif]-->设置虚拟磁盘

<!--[if !supportLists]-->三、<!--[endif]-->设置默认SDK

 

设置环境变量

环境变量的设置主要是将EPOCROOT 改为反斜杠 / 表示根目录,可以设置成用户变量也可以是系统变量。

这里我再提供一个我的系统变量PATH 的值

C:/Program Files/Nokia/Carbide.c++ v2.0/x86Build/Symbian_Tools/Command_Line_Tools;C:/Program Files/Common Files/Symbian/Tools;C:/Program Files/CSL Arm Toolchain/bin;C:/Perl/bin;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;C:/Program Files/Java/jdk1.5.0_05/bin;

不要忘了设置winscw相关的环境变量,见步骤参考第四部分->单平台->2

    Carbide 下的设置是根据具体工程进行的。到Project => Property => Carvide.c++ => Carbide Build Configuration => Environment

将EPOCROOT 改为 /,再切换到ROM Builder 选项卡设置working Directory 为 你使用的SDK 所在的虚拟盘符下的 路径。比如你使用的SDK 在虚盘Y下,改为Y:下的某个路径

 

设置虚拟磁盘

然后写一个.BAT 文件,如下

subst T: C:/Symbian/8.0a/S60_2nd_FP2_SC

SUBST Y: C:/Symbian/9.2/S60_3rd_FP1_4

devices -setdefault @s60_3rd_fp1_4:com.nokia.s60

意思是设置虚拟磁盘 T/W/Y ,分别对应相应的目录,然将s60_3rd_fp1_4:com.nokia.s60设置为默认SDK 。注意,这里的设备名可能和你机子上的不一样,要查看你安装了哪些设备(SDK),在命令行下输入devices

<!--[if !vml]--><!--[endif]-->

在设置默认SDK 时要输入完整的设备名。

 

为了方便我还写了两个.bat文件

分别是SET_S60_2nd_fp2_default.bat

devices -setdefault @s60_2nd_fp2_sc:com.nokia.series60

和SET_S60_3rd_fp1_default.bat

devices -setdefault @s60_3rd_fp1_4:com.nokia.s60

这样可以很方便的切换不同的SDK

 

每次编译都是使用当前默认SDK进行编译,所以切换SDK应该和设置默认SDK一起进行,明确你当前使用的默认SDK是哪一个。

 

注:当然你可以不设置虚拟磁盘,但你必须每次修改环境变量EPOCROOT来符合你当前使用的SDK(比如你使用3RD 则为/Symbian/9.2/S60_3rd_FP1/; 2ND则为/Symbian/8.0a/S60_2nd_FP2_SC/等等),并修改默认SDK

 

多个sdk 下编译步骤:

A、命令行下编译

1、设置默认设备(不使用虚拟磁盘的还要设置环境变量EPOCROOT)

2、键入正确的路径(group)

3、bldmake bldfiles

4、abld build winscw udeb   (3rd 如果是 2nd 则为 abld build wins udeb)

5、epoc

 

B、carbide下编译

主要和单平台差不多,区别在于打开项目之后要进行设置,选择你要编译的项目进行如下设置

Carbide 下的设置是根据具体工程进行的。到Project => Property => Carvide.c++ => Carbide Build Configuration => Environment

如果你从虚拟磁盘打开项目,则将EPOCROOT 改为 /,再切换到ROM Builder 选项卡设置working Directory 为 你使用的SDK 所在的虚拟盘符下的 路径。比如你使用的SDK 在虚盘Y下,改为Y:下的某个路径。

如果你从物理磁盘如C: 下打开项目,则将EPOCROOT改为你使用的SDK所在的目录,如

/Symbian/9.2/S60_3rd_FP1/ ,ROM Build 也作相应的修改,保证同一盘符这一基本条件。

 

 

七、一些错误归总

1、EPOCROOT environment variable must be capital 的问题,意思是EPOCROOT 必须为大写

解决方法:查看PATH系统环境变量:

PATH = C:/Program Files/Common Files/Symbian/Tools;C:/Program Files/CSL Arm Toolchain/bin;C:/Perl/bin;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;C:/Program Files/Java/jdk1.5.0_05/bin;重点对比黑色部分

 

2、Can’t CD to 的问题:

<!--[if !vml]--><!--[endif]-->

 

解决方法:

由于使用了未设置虚拟盘符之前创建的abld.bat文件,其根目录指向的是c: ,所以当设置了虚拟盘符T: 之后应当清除之前生成的.bat 重新bldmake bldfiles 生成新的符合设置的abld.bat 文件。如下:

<!--[if !vml]--><!--[endif]-->

这个问题的本质是EPOCROOT 的设置和abld.bat文件中描述的路径信息有冲突,检查你的默认设备是否符合,还要查看你的EPOCROOT设置是否和当前SDK符合。如果你的默认SDK和EPOCROOT都是正确的,那请重新使用bldmake bldfiles命令来重新生成albd.bat文件。

一些旧的不再使用的测试程序应该使用bldmake clean 清除,或使用CARBIDE 右击项目,选择project clean 清除项目

 

总的来说,就是工程信息一定要符合系统设置信息特别是路径,当其中一个发生变化时,应当重新执行上诉命令,如此才能真确编译

 

3、有时会遇到编译后输入epoc 命令之后模拟器死也不出来的情况

解决方法:

这时将用户环境变量作如下修改

TEMP = c:/Temp

TMP = c:/Temp

 

4、使用bldmake bldfiles 如果出现LINK.EXE 不是内部或外部命令,也不是可执行文件或批处理文件

解决方法:

应该将LINK.EXE 的路径添加到系统环境变量PATH中,LINK.EXE在C:Progrm File/Microsoft Visual Studio/VC98/Bin中。如果出现无法连接mspdb60.dll,则将它所在的路径也加入PATH中,它在C:Progrm File/Microsoft Visual Studio/Common/MSDev98/Bin。

 

5、unsupported ……wins  

解决方法:

使用abld build winscw udeb 代替 abld build wins udeb

 添加path = C:/Program Files/CSL Arm Toolchain/bin;

 

6、模拟器不能启动,启动未完成就关闭了

解决方法:

具体原因我不清楚,初步估计是和其他应用程序产生了冲突,因为当我用Administrator用户运行是可以启动的,可见当模拟器得到了更高的权限和更多的资源之后可以运行,所以显然重启可以解决问题。

 

7、如果用carbide c++ 编译helloworldbasic 出现的错误,看不出来是什么错误。

<!--[if !vml]--><!--[endif]-->

 

解决过程:发现编译所有的例子都是这样的错误,但如果是使用carbide 新建的工程则不会出错。

但是在命令行下使用命令 abld build winscw udeb 却不会发生错误,初步估计是carbide中的EPOCROOT设置的问题,可能是使用了c: 作为根目录

<!--[if !vml]--><!--[endif]-->

 

到Project => Property => Carvide.c++ => Carbide Build Configuration => Environment

将EPOCROOT 改为 /

出现问题:

<!--[if !vml]--><!--[endif]-->

Creation Time     Description   Resource      Path       Location       Type

1248081189140  ERROR: Unable to open file for reading! /epoc32/winscw/c/system/temp/s2mg.tmp/.._gfx_qgn_menu_aknexeditor.svgb    Editor           Unknown      C/C++ Problem

 

将环境变量设回原值/Symbian/9.2/S60_3rd_FP1_4/ 并且不从虚拟磁盘中导入,直接从C :中导入,编译通过并顺利执行。

所以上面的错误估计是由于workplace 和 工程不在同一个盘符下(由于设置了虚拟目录),workplace是在C:/Symbian/Carbide/workspace 下,而我设置C:/Symbian/9.2/S60_3rd_FP1_4 为Y :盘。

为了验证我的猜想,选择另一个程序Y:/S60Ex/Chat/group

首先将环境变量设置为 EPOCROOT  = /

<!--[if !vml]--><!--[endif]-->

设置working Directory

<!--[if !vml]--><!--[endif]--> 编译执行,成功!!!

总结,什么都要在一个盘符下,若是设置了虚拟盘符,应当将工作区间working directory 也设置在你引入的工程所在的盘符下!!!

最让人郁闷的是这种设置要在每个工程都进行一遍!!

 

 

总的来说问题有四类,工具安装、环境变量设置和工程的设置的问题

    一定要将所有工具安装在同一个盘中,最好采用默认路径

对于环境变量要记住:EPOCROOT的值代表的是当前默认SDK的根目录,要根据你使用的SDK(必须设置为默认设备)所在的目录进行设置,并且虚拟盘符和物理盘符一样要区别对待。还有各种工具的路径也要正确的加入系统PATH中。

对于工程的设置,项目的各种信息要存储在同一个盘符下,项目信息的描述要符合当前环境的设置(包括EPOCROOT、默认设备、Working Directory等)

 

由于只接触symbian一周,很多地方也不是很清楚明白,写这东西也许也有点拿出来炫的成分。

如果有错误或浅薄的地方请见谅!

欢迎大家指正!!


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dong_chi/archive/2009/11/18/4831699.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值