S60v5 编程环境的搭建(2)
以前自己也尝试过在搭建Windows XP下搭建Symbian S60v5系统的编程环境。(那一次也是花了不少气力~~~)怎么说呢,其繁琐的安装过程,缓慢的模拟器,十分不熟悉的IDE环境,都让人很不舒服。于是我很快投入了Qt的怀抱。Nokia Qt SDK的安装就相对方便很多,编译器运行也快。用Qt Creator的确是能很快上手开发出自己想要的小东西:)不过它也有美中不足的地方——不是所有安装S60v5系统的手机都配备有Qt运行库的。应该只有Symbian^3系统是自带有Qt库,别的系统都需要安装。这可麻烦了,一个Qt库十几MB,安装下去,把手机存储空间占用了不少。。。本来空间就不够。为了一个小程序这么大费周章实在是不值得。另外,由于很多手机没有内置Qt库,这就使得用Qt编写的程序的适用性很窄。(这也不能怪用户,那个库实在太庞大了)思来想去,别人都用Symbian C++都开发出那么多程序了,怎么就这么难呢!于是自己想再试试。
上一篇:S60v5 编程环境的搭建
==================================================================================================================================
上次由于下载软件时没有注意版本问题,使得模拟器出现各种问题,这次小心了。特地按照书里说的下了推荐版本的软件:
1.Active Perl 5.6.1 这个旧版本貌似不好找,不过网上还是找得到的。网上有人说高版本也可以,不怕麻烦的人就试试吧,这次我是小心了:)我下载的文件是ActivePerl-5.6.1.628-MSWin32-x86-multi-thread.msi 参考下载地址:http://download.csdn.net/download/olinwen/546673
2.Java SE 1.5 这个在oracle的网站上仔细找还找得到。我下载的是Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c),安装文件是j2sdk-1_5_0-beta-windows-i586.exe 参考下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html
3.Symbian SDKs 既然自己的手机是S60 5th Edtion的体统,当然选S60 5th Edition的SDK。安装文件是S60_5th_Edition_SDK_v1_0_en。参考下载地址:http://www.developer.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html
4.Carbide.c++ 2.7 我用的是2.7版的,在官网上可以下得到。现在好像3.2版已经出来了。看了下官网的介绍,说是3.2版本不再支持S60 3rd Edition的开发,所以我还是选了旧版本。安装文件是Carbide_cpp_v2_7_en.exe 参考下载地址:http://www.developer.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html
下载好后开始安装:
注意:最好将以上4个软件装在同一盘符下,像我就全装在了G:\S60\目录下。不要问为什么全都要装在同一盘符下了,我知道有人说Active Perl和Java SE可以随便装,不过为了方便管理,省事儿,最主要的是安装过程错误少,还是全都安装在一起吧!经过我实验,在不在C:盘倒是无所谓,以后操作的时候注意点就行了。比如在运行模拟器时:由于我装在了G盘,而cmd默认情况下是C盘,因此要先输入G: 回车进入G盘,再执行epoc命令打开模拟器。
我的目录分配方式如下:
ActivePerl--------------------G:\S60\perl_5_6\
Java SE JDK 1.5-----------G:\S60\java_1_5\
S60_5th_Edition_SDK---G:\S60\devices\S60_5th_Edition_SDK_v1.0\
CSL_Arm_Toolchain-----G:\S60\CSL_Arm_Toolchain\
Carbide.c++-----------------G:\S60\Carbide_cpp_v2_7\
1.安装Active Prel 5.6.1
不多说,除了设置安装路径外一路“Next”搞定。记住安装时选择自动更新环境变量。可能是我装了安全防护软件的原因,即便选了这一项,系统环境变量也没有变。无奈只有自己添加:我的电脑(右键)---属性---高级---环境变量---系统变量---编辑Path---在其中添加“G:\S60\perl_5_6\bin\”(不包括双引号)
测试:重新运行cmd
G:\>perl -version
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2001, Larry Wall
Binary build 628 provided by ActiveState Tool Corp. http://www.ActiveState.com
Built 15:41:05 Jul 4 2001
……
看到以上内容证明已经设置正确。
2.安装Java SE JDK 1.5
基本也是除了设置路径外就是一直"Next"了。当然,环境变量估计也是没有自动设置成功的,还得自己动手:
(1)我的电脑(右键)---属性---高级---环境变量---系统变量
(2)在系统变量中新建CLASSPATH,在其中添加".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"(不包括双引号,且开头有个.;号。后面不再重复,各位自己细心)
(3)在系统变量中新建JAVA_HOME,在其中添加"G:\S60\java_1_5"(根据自己的实际目录,自己修改哈)
(4)在系统变量Path中添加"%JAVA_HOME%\bin"
测试:重新运行cmd
G:\>java -version
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)
G:\>javac -version
javac 1.5.0-beta
javac: no source files
Usage: javac <options> <source files>
……
看到以上内容证明已设置正确。
3.安装Symbian SDK S60 5th Edtion
这个选择好目录后,小心安装。最好还是细细研究下安装下的S60 5th Edition SDK Installation Guide.pdf再安装。当然,就算研究过了,也不一定能顺利装完。。。安装过程中会提示你是否安装CSL_Arm_Toolchain,选择是。如果你安装一路都很顺,直到结束。那么恭喜,你只剩环境变量的配置环节了!
我将要新增或编辑的变量名和其中的值列在这里(我是安装在G:\S60\devices\S60_5th_Edition_SDK_v1.0\下的):
(1)EPOCROOT---\S60\devices\S60_5th_Edition_SDK_v1.0\
(2)Path--------------\epoc32\tools;\epoc32\gcc\bin;G:\S60\CSL_Arm_Toolchain\bin
(3)Path--------------C:\Program Files\Common Files\Symbian\tools(这个我忘了是在安装完Symbian SDK S60 5th Edtion出现的,还是在安装完Carbide.c++后出现的。总之如果后面的测试有问题,就把对照这些添加吧。)
测试:
1)找到Symbian SDK S60 5th Edtion的安装目录,进入其S60CppExamples文件夹,如G:\S60\devices\S60_5th_Edition_SDK_v1.0\S60CppExamples。将其中的helloworldbasic文件夹复制到自建的工作目录下,如G:\S60\workspace。(注意要在同一盘符下)。重新打开cmd。
G:\S60\workspace\helloworldbasic\group>devices
S60_5th_Edition_SDK_v1.0:com.nokia.s60 - default
(如果S60_5th_Edition_SDK_v1.0:com.nokia.s60不是default,用命令devices -setdefault S60_5th_Edition_SDK_v1.0:com.nokia.s60将其设为默认)
2)
G:\S60\workspace\helloworldbasic\group>bldmake bldfiles
这时G:\S60\workspace\helloworldbasic\group中会生成一个ABLD.BAT文件,G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\中会新建目录结构\workspace\helloworldbasic\group里面有各种文件
3)
G:\S60\workspace\helloworldbasic\group>abld build winscw udeb(如果系统环境没有配置好,这里可能出现"……Nothing to do"的错误提示。可以重新配置下系统变量,如果不行,重装下CSL Arm Toolchain,再重新配置。我就是这么解决"……Nothing to do"问题的。)
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\EXPORT.make" EXPORT VERBOSE=-s
Nothing to do
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" MAKEFILE VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW MAKMAKE
perl -S makmake.pl -D \S60\workspace\helloworldbasic\group\HELLOWORLDBASIC WINS
CW
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" LIBRARY VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW LIB
make -s -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" LIBRARY
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" RESOURCE CFG=UDEB VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB RESOURCE
MifConv version 1.11 build (50, SVG stand-alone).
Checking: ..\gfx\qgn_menu_helloworldbasic.svg
Choosing...
Used from: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\tools\SVGTBINENCODE.exe.
Convert files...
.
Loading mif icons...
Loading file: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\s60\icons\temp\
s36s.tmp\.._gfx_qgn_menu_helloworldbasic.svgb
Writing mif: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\WINSCW\UDEB\Z\
resource\apps\helloworldbasic_aif.mif
make -s -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" RESOURCEUD
EB
Creating \s60\devices\s60_5th_edition_sdk_v1.0\epoc32\build\s60\workspace\hellow
orldbasic\group\helloworldbasic\winscw\udeb
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" TARGET CFG=UDEB VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB BLD
make -s -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" UDEB
HelloWorldBasic.cpp
HelloWorldBasicApplication.cpp
HelloWorldBasicAppView.cpp
HelloWorldBasicAppUi.cpp
HelloWorldBasicDocument.cpp
HelloWorldBasicQueryDialog.cpp
HelloWorldBasic.UID.CPP
mwldsym2.exe: warning: Multiply defined symbol: ___get_MSL_init_count in
mwldsym2.exe: warning: files uc_cwhelp.obj (EEXE.LIB), startup.win32.c.obj (msl_
all_static_mse_symbian_d.lib),
mwldsym2.exe: warning: keeping definition in startup.win32.c.obj
mwldsym2.exe: warning: Multiply defined symbol: __CleanUpMSL in
mwldsym2.exe: warning: files uc_cwhelp.obj (EEXE.LIB), startup.win32.c.obj (msl_
all_static_mse_symbian_d.lib),
mwldsym2.exe: warning: keeping definition in startup.win32.c.obj
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" FINAL CFG=UDEB VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB FINAL
这时G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\winscw\udeb中会出现文件HelloWorldBasic.exe
4)
G:\S60\workspace\helloworldbasic\group>epoc
启动模拟器,漫长的等待。。。进入其Menu---applications---HelloWorld运行试试!如果成功了证明你已经可以编译并正常运行模拟器了。(这里再次提醒大家注意,S60v5的模拟器不支持长文件名的系统Temp,或者是因为系统默认的Temp在C盘的缘故,模拟器不支持而无法打开或开一下就关了。我将用户变量中的Temp和Tmp变量全改为G:\Temp后,模拟器终于正常打开了。这么麻烦为何一直都不更新。。。)
5)
G:\S60\workspace\helloworldbasic\group>abld build gcce urel
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\EXPORT.make" EXPORT VERBOSE=-s
Nothing to do
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" MAKEFILE VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE MAKMAKE
perl -S makmake.pl -D \S60\workspace\helloworldbasic\group\HELLOWORLDBASIC GCCE
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" LIBRARY VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE LIB
make -s -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" LIBRARY
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" RESOURCE CFG=UREL VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL RESOURCE
MifConv version 1.11 build (50, SVG stand-alone).
Checking: ..\gfx\qgn_menu_helloworldbasic.svg
Choosing...
Used from: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\tools\SVGTBINENCODE.exe.
Convert files...
.
Loading mif icons...
Loading file: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\s60\icons\temp\
s174.tmp\.._gfx_qgn_menu_helloworldbasic.svgb
Writing mif: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\data\z\resource\apps\h
elloworldbasic_aif.mif
make -s -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" RESOURCEUREL
Creating \s60\devices\s60_5th_edition_sdk_v1.0\epoc32\build\s60\workspace\hellow
orldbasic\group\helloworldbasic\gcce\urel
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL BLD
make -s -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" UREL
helloworldbasic.cpp
helloworldbasicapplication.cpp
helloworldbasicappview.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
from /S60/workspace/helloworldbasic/src/helloworldbasicappview.
cpp:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
helloworldbasicappui.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:27,
from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknNoteDialog.h:660:15: war
ning: no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklb
x.h:39,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknQu
eryDialog.h:25,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:28,
from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklbed.h:256:16: warning:
no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknpo
puplayout.h:26,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknQu
eryDialog.h:28,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:28,
from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
In file included from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:27:
/S60/workspace/helloworldbasic/inc/HelloWorldBasic.hrh:27:34: warning: no newlin
e at end of file
helloworldbasicdocument.cpp
helloworldbasicquerydialog.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklb
x.h:39,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknqu
erydialog.h:25,
from /S60/workspace/helloworldbasic/inc/HelloWorldBasicQueryDia
log.h:21,
from /S60/workspace/helloworldbasic/src/helloworldbasicquerydia
log.cpp:19:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklbed.h:256:16: warning:
no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknpo
puplayout.h:26,
from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknqu
erydialog.h:28,
from /S60/workspace/helloworldbasic/inc/HelloWorldBasicQueryDia
log.h:21,
from /S60/workspace/helloworldbasic/src/helloworldbasicquerydia
log.cpp:19:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
make -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" FINAL CFG=UREL VERBOSE=-s
make -s -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL FINAL
经过一长串的编译,如果没有报错,那么程序正确。在G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\gcce\urel下会生成又GCCE编译的Release版的exe文件HelloWorldBasic.exe
6)
接着进入G:\S60\workspace\helloworldbasic\sis目录。在里面有一个helloworldbasic_gcce.pkg文件。打开发现里面其实是个模板,目录全都指定有问题。因此要先修改才能用。
这里给出我修改的一个版本(最好使用Unicode编码):
;Language - standard language definitions
&EN
; standard SIS file header
#{"HelloWorldBasic"},(0xA000017F),1,0,0
;Localised Vendor name
%{"Vendor"}
;Unique Vendor name
:"Vendor"
;Supports S60 5th Edition
[0x1028315F], 0, 0, 0, {"Series60ProductID"}
;Files to install
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\release\gcce\urel\HelloWorldBasic.exe"-"!:\sys\bin\HelloWorldBasic.exe"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\resource\apps\HelloWorldBasic.rsc"-"!:\resource\apps\HelloWorldBasic.rsc"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\private\10003a3f\apps\HelloWorldBasic_reg.rsc"-"!:\private\10003a3f\import\apps\HelloWorldBasic_reg.rsc"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\resource\apps\HelloWorldBasic_aif.mif" -"!:\resource\apps\HelloWorldBasic_aif.mif"
执行:
G:\S60\workspace\helloworldbasic\sis>makesis helloworldbasic_gcce.pkg
Processing helloworldbasic_gcce.pkg...
Created helloworldbasic_gcce.sis.
则在G:\S60\workspace\helloworldbasic\sis生成helloworldbasic_gcce.sis文件。
执行:
G:\S60\workspace\helloworldbasic\sis>makekeys -cert -password 123456 -len 2048 -dname "CN=myname OU=Development OR=symbian CO=GB EM=none@none.com" mykey.key mycert.cert
Generating DSA key .................................Generated!
Created key: mykey.key
Created certificate: mycert.cert
这时会在sis目录下生成mycert.cert、mykey.key两个文件。
7)最后一步,自签名:
G:\S60\workspace\helloworldbasic\sis>signsis helloworldbasic_gcce.sis helloworldbasic_gcce.sisx mycert.cert mykey.key 123456
这时sis目录中会出现已经被自签名的helloworldbasic.sisx文件,放入手机安装着试试吧,是不是可以用啦:)
4.安装Carbide.c++ 2.7
这个还好,选好目录,按照提示安装就行。当然奇怪的问题再次发生。。。我点了finish之后,窗口关闭了。可任务栏中却还留着,打开进程列表,安装进程也还在。我开始以为是安装没有结束,就等啊等啊。。。等了好久它都不关。我就强行结束了程序。问题来了,当我点击程序组中的Symbian Foundation---Carbide.c++ v2.7---Configure environment for WINSCW command line进行环境配置时,系统提示"G:\S60\Carbide_cpp_v2_7\configuration\run_env_update.bat不是有效的 Win32 应用程序"。找到这个文件,果然,显示是0KB。这是什么情况?上次我装的时候就没这种问题啊。没有这个文件,就没法儿自动配置系统变量了。经过长时间的搜索(Google的,Baidu硬是没Bai出来。。。)解决办法是在run_env_update.bat中加入这么两行:
cd "G:\S60\Carbide_cpp_v2_7\x86Build\env_switch\"
env_update.exe
也就是进入安装目录,运行了其中的一个程序。各位根据自己的安装目录,自行更改就行。再点击,就可以运行啦。所有的提示,全都回答y,结束后系统环境就自动配置好了。
测试:这次我们自己新建一个工程。
第一次运行时会自动检查系统环境,建立工作目录。
进入后,File---New---Symbian OS C++ Project---S60---GUI Application---输入Project name---Builder选择SBSv1就行。SBSv1调用的是Perl,而SBSv2调用的是python。
选择工程(右键)---Build Configurations---Set Active---Emulator Debug (WINSCW),再点击工具栏里的Run就行了。模拟器会自动打开,在Applications中可以找到刚才创建的程序。
如果想创建可以在手机中安装的程序,只需将刚才的Set Active改为Phone Release (GCCE),然后右击工程---Build Project,在工程的sis目录下就会生成和sis和sisx文件。如果没有设置签名,软件会自动自签名。
===================================================================================================================================
好啦,整过过程就是这样。有点麻烦,不过多试几次,多看注意事项,有点耐心,还是可以创建好开发环境的。现在iOS和Android系统的开发大行其道,不过我还是喜欢Symbian。呵呵,因为自己的手机是5230,用得挺顺手的,暂时还不打算换。自己开发点小程序,自己用正合适。另外我还是比较喜欢C++,Java完全没怎么学,Symbian C++比较适合自己。
我不喜欢一味地赶潮流,Android和iOS不就是炫一点吗,Symbian也可以做到啊,而且价格便宜得多,安全性也比较好。Google的开发策略已经让Android的兼容性和安全性受到了严峻的挑战。iOS用不起,就不说啦,呵。Symbian从一开始就是专为手机设计的操作系统,开发了这么多年,优化了这么久,运行效率还是很高的,在比较低的配置下就可以流畅使运行。不知Nokia为何一定要放弃Symbian,为何一定要跟微软合作,个人觉得Symbian还很有继续开发潜力,完全可以在原来的基础上继续开发。Nokia的决定真是让我们这些使用Symbian的人不可理解啊。
S60v5 编程环境的搭建(2)相关推荐
- S60v5 编程环境的搭建
下一篇: S60v5 编程环境的搭建(2) 首先要下载相应的支持文件: 1.ActivePerl http://www.activestate.com/activeperl/downloads 2.S ...
- Linux下eclipse中shell脚本编程环境的搭建
注意:本文所用到的linux发行版是fedora 15.如果用fedora 15以上的版本可能会有问题.至于解决方案或者是搭建方法我会尽量抽出时间写一篇新的博客... 本文主要是介绍在linux平台下 ...
- 基于C#(Visual Studio 2013)的AutoCAD2016二次开发(一)编程环境的搭建
机械设计中一般都采用AutoCAD设计软件,在复杂 CAD问题或特殊用途的设计中,依据原有软件的功能往往难以解决问题,在此情况下,只是会使用软件的基本功能是不够的.本着自学和相互交流的原则,撰写如下学 ...
- 【Python学习教程】Python编程环境搭建
文章目录 Windows安装Python(图解) 关于 IDLE Linux(Ubuntu)系统安装Python 更新 Python 版本 重新安装 Python 1) 下载源代码 2) 编译 小技巧 ...
- 机器学习Python编程环境搭建
引言 使用Python作为机器学习的编程工具,具有很多优点,例如Python语法简洁,表达能力强(简短的几行代码抵得上其它语言数十行),第三方支持库多."工欲善其事,必先利其器", ...
- 《OpenGL超级宝典》编程环境配置
最近在接触OpenGL,使用的书籍就是那本<OpenGL超级宝典>,不过编程环境的搭建和设置还是比较麻烦的,在网上找了很多资料,找不到GLTools.lib这个库.没办法自己就借助源码自己 ...
- 【Qt入门第1篇】 基础(一)Qt开发环境的搭建和hello world
导语 从这一篇我们正式开始Qt编程.本篇主要讲解Qt编程环境的搭建.为了适应大多数读者的需要,同时为了避免系统环境的不同而产生不必要的问题,这里选择使用Windows系统的Qt版本.因为在前面几十篇中 ...
- linux 运行lua脚本语言,你知道在linux下搭建lua脚本语言的编程环境?
描述 lua是脚本语言的一种,具体的该脚本的介绍可百度,本文介绍Linux系统下搭建lua编程环境的步骤,以及在搭建过程中碰到的种种问题. 一.下载获取lua源码 地址http://www.lua.o ...
- python环境搭建_搭建Python编程环境
说明:本文面向信息技术新教材环境下的中学生或者编程小白.Python作为新教材落实计算思维的主要载体,有其独特的魅力.千里之行始于足下,搭建Python运行环境是跨出进入新世界大门的第一步. 搭建Py ...
最新文章
- POJ1143	Number Game(DP)
- 解决方案:无源(PON)光网络在弱电工程中的应用
- Matlab 使用GPU加速 转载
- 声明式编程与函数式编程_实用程序类与函数式编程无关
- python日历模块_Python日历模块| firstweekday()方法与示例
- String s1==s2面试题
- leetcode-search-in-rotated-sorted-array
- 华为EMUI 10系统内测截图曝光:基于Android 10.0
- ————————C语言中快速排序方法——————————————
- 用python画四叶草-使用 python 操作 redis
- 谷歌浏览器不兼容小于12px的字体,在做网页的时候怎么解决
- delphi压缩后使用http协议base64上传下载6G超大文件
- PHP处理微信昵称特殊符号过滤方法
- 单片机软件延时的时间计算
- pytorch每日一学22(torch.empty()、torch.empty_like()、torch.empty_strided())创建未初始化数据的tensor
- 探讨select in 在postgresql的效率问题
- Windows Api 封装 C++ 库
- 一种近红外I区荧光染料ICG-CBT 主要应用领域,是药品监督管理局(FDA)批准的体内应用染料
- 阿里大鱼短信接口教程php,ECSHOP短信接口【ECSHOP阿里大鱼短信】ECSHOP短信插件手机短信服务设置教程-ECSHOP教程网...
- 高仿贝壳找房之使用陀螺仪移动图片Drawable
热门文章
- 计算机科学引论2021英文,计算机科学引论= Computing Essentials : 英文
- oracle主键必须加分区字段,oracle分区表和主键关系
- Python统计序列或文件中元素的频度
- HTML图片不能上下铺满屏幕_这应该是最最最简单的,职场PPT图片排版方法了!...
- Android微信支付订单支付失败的问题
- 论文参考文献格式详细国家标准
- 拼多多关键词搜索商品详情分析接口(分类ID搜索精准商品数据)代码对接教程
- Qt开源库-顶级浮动窗口系统-Advanced-Docking-System【01】
- centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0)
- 如果太阳突然爆炸 地球会发生什么?| 1分钟了解广义相对论