详解S60 WebKit 21772编译教程

移动开发
S60 WebKit 21772编译教程是本文要介绍的内容,主要是来了解并学习S60 WebKit应用,具体内容的学习来看本文详解。

 

S60 WebKit 21772编译教程是本文要介绍的内容,主要是来了解并学习S60 WebKit应用,具体内容的学习来看本文详解。

1、安装环境:

  1. perl jdk S60-SDK-0548-3.0-f.3.215f.zip  
  2. Carbide1.3(其他Carbide应该一样)  
  3. svn 

2、磁盘映射:

  1. subst X: C:/Symbian/9.1/S60_3rd 

3、下载webkit

  1. svn co http://svn.webkit.org/repository/webkit/S60/trunk@21772 S60 到 X: 

4、修改build.bat

(1)确定sdk在注册表的位置正确(同一个SDK安装多次会不同)

  1. my $sdkhome =  
  2.   $Registry->{  
  3. "HKEY_LOCAL_MACHINE/SOFTWARE/Symbian/Series 60/3rd Ed. SDK for Symbian OS/TargetDir"  
  4.   }; 

(2)carbide的安装目录

  1. $cbdhome = "E://Nokia//Carbide.c++ v1.3" unless -d $cbdhome; 

(3)carbide文件目录修改

  1. plugins//com.nokia.carbide.cpp.support_1.0.0 替换为 x86Build 

原来carbide1.0的路径改为1.3的 $cbdhome//x86Build//Symbian_Support//
   
(4)注释掉delete $ENV{'MWSYM2LIBRARIES'};

改为 #delete $ENV{'MWSYM2LIBRARIES'};       

5、memman的错误

  1. elf2e32 : Error: E1036: Symbol _ZTI15CSimpleNotifier Missing from ELF File : ../EPOC32/BUILD/S60/MEMMAN/GCCE/UREL/MemMan_sdk.dll.  
  2. elf2e32 : Error: E1036: Symbol _ZTV15CSimpleNotifier Missing from ELF File : ../EPOC32/BUILD/S60/MEMMAN/GCCE/UREL/MemMan_sdk.dll. 

这个错误是由于导出函数里面少函数

  1. 修改c:/Symbian/9.1/S60_3rd/S60/MemoryManager/Eabi/MemMan_gcceU.DEF      
  2.     _ZTI15CSimpleNotifier @ 18 NONAME ; #<TI># 改为 _ZTI15CSimpleNotifier @ 18 ABSENT ; #<TI>#  
  3.     _ZTV15CSimpleNotifier @ 23 ABSENT ; #<VT># 改为 _ZTV15CSimpleNotifier @ 23 ABSENT ; #<VT>

   

修改c:/Symbian/9.1/S60_3rd/S60/MemoryManager/Eabi/MemMan_sdkU.DEF   

  1. _ZTI15CSimpleNotifier @ 22 NONAME ; DATA 改为 _ZTI15CSimpleNotifier @ 22 ABSENT ; DATA  
  2. _ZTV15CSimpleNotifier @ 27 NONAME ; DATA 改为 _ZTV15CSimpleNotifier @ 27 ABSENT ; DATA   

6、"int64_t"数据类型的问题

  1. JavaScriptCore//bindings//HashFunctions.h:35:error:'int64_t' does not name a type..  
  2.     JavaScriptCore//bindings/HashTraits.h:53: error: no type named `SignedType' in `struct WTF::IntTypes<8u>

由于GCCE编译器里面没有内置int64_t之类的数据类型导致的(armv5的编译器就没有这个问题)

修改c:/Symbian/9.1/S60_3rd/S60/JavaScriptCore/kjs/stdint.h文件,在末尾#endif的上面添加如下的定义:

  1. #ifdef __GCCE__  
  2. typedef long long int64_t;  
  3. typedef unsigned long long uint64_t;  
  4. typedef unsigned long uintptr_t;  
  5. typedef unsigned long intptr_t;  
  6. #endif   

7、代码中namespace忘记加分号结尾:

  1. c:/Symbian/9.1/S60_3rd/S60/WebKit/BrowserView/inc/WidgetExtension.h  
  2.     namespace KJS {   
  3.        class WidgetEventHandler;  
  4.     };  
  5. c:/Symbian/9.1/S60_3rd/S60/WebCore/khtml/dom/dom_string.h  
  6.     namespace khtml {  
  7.         class Length;  
  8.     };  
  9. c:/Symbian/9.1/S60_3rd/S60/WebCore/khtml/misc/loader.h  
  10.     namespace KIO {  
  11.       class Job;  
  12.       class TransferJob;  
  13.     };     

 

8、在java script core里面,有几个函数是没有定义的,需要手工添加进去:

  1. Kwqkhtmlpart.cpp:(.text+0xb1ec): undefined reference to `_NPN_CreateScriptObject'  
  2.     make[1]: *** [../EPOC32/RELEASE/GCCE/UREL/WebCore_sdk.dll] Error 1  
  3.    c:/Symbian/9.1/S60_3rd/S60/JavaScriptCore/group/BMARM/JavaScriptCoreU.def 

打开这个文件,然后在该文件的末尾添加如下定义:

  1. _ZN3KJS11Interpreter30createLanguageInstanceForValueEPNS_9ExecStateENS_8Bindings8    
  2. Instance15BindingLanguageERKNS_6ObjectEPKNS3_10RootObjectESB_ @ 389 NONAME  
  3.     _ZN3KJS16RuntimeObjectImpC1EPNS_8Bindings8InstanceEb @ 390 NONAME   
  4.     _ZN3KJS16RuntimeObjectImpC2EPNS_8Bindings8InstanceEb @ 391 NONAME   
  5.     _ZTIN3KJS16RuntimeObjectImpE @ 392 NONAME ; #<TI>#   
  6.     _ZTVN3KJS16RuntimeObjectImpE @ 393 NONAME ; #<VT>#   
  7. _ZN3KJS15ProtectedValues20decreaseProtectCountEPNS_8ValueImpE @ 394 ABSENT   
  8. _ZN3KJS15ProtectedValues20increaseProtectCountEPNS_8ValueImpE @ 395 ABSENT   
  9. _ZN3KJS8Bindings10RootObject14setInterpreterEPNS_11InterpreterE @ 396 NONAME   
  10. _ZN3KJS8Bindings10RootObject25removeAllNativeReferencesEv @ 397 NONAME   
  11. _ZN3KJS8Bindings8Instance32createBindingForLanguageInstanceENS1_15BindingLanguageEPvPKNS0_10RootObjectE @ 398 NONAME   
  12.     _NPN_CreateScriptObject @ 399 NONAME 

9、

  1. WebCore_sdk.dso not found  
  2.  
  3.  Solution: freeze exports by build -nfg and rebuild webcore completly as build -g webcore 

   
10、

  1. aiwdialdata.dso: No such file: No such file or directory  
  2.  
  3. Solution: modify webkit.mmp file as given below #ifndef __BROWSER_SDK LIBRARY aiwdialdata.lib #endif  

11、

  1. make[1]: *** [../EPOC32/RELEASE/GCCE/UREL/browserengine_sdk.dll] Error 1  
  2. make: *** [TARGETWEBKIT] Error 2  
  3.       
  4. elf2e32 : Error: E1036: Symbol _ZTI10CScrollBar,_ZTI12CScrollThumb,_ZTI15CScrollBarFrame,_ZTI22CScrollBarCornerWindow,  
  5. _ZTV10CScrollBar,_ZTV12CScrollThumb,_ZTV15CScrollBarFrame,_ZTV22CScrollBarCornerWi  
  6. ndow Missing from ELF File : ../EPOC32/BUILD/S60/WEBKIT/GCCE/UREL/browserengine_sdk.dll. 

Solution: 同8,把相应DEF中,这些已经不存在的方法改成 ABSENT

12、

  1.     arm-none-symbianelf-ld: ../EPOC32/RELEASE/ARMV5/LIB/HomePage_Sdk.dso: No such file: No such file or  
  2.     directory  
  3.     make[1]: *** [../EPOC32/RELEASE/GCCE/UREL/WebUi.exe] Error 1  
  4.     make: *** [TARGETWEBUI] Error 2  
  5.       
  6.     Solution: freeze exports by build -nfg and rebuild webcore completly as build -gn  
  7.  
  8. Processing Reindeer.pkg...  
  9. Created Reindeer.SIS  
  10. Sign Reindeer.sis...  
  11. Delete intermediate files...  
  12. Done, please copy Reindeer.sisx to your phone  
  13.  
  14. Completed in: 00:02:09  
  15.  
  16. Scanning build output for errors: 0 found  
  17. Restoring variant.cfg 

真机编译成功。

小结:详解S60 WebKit 21772编译教程的内容介绍完了,希望通过S60 WebKit内容的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-09-09 14:39:43

S60 Webkit

2009-04-16 08:23:52

Opera浏览器S60

2011-06-23 09:31:56

Nokia Qt SDK

2011-06-24 09:46:01

Windows PhoSymbian S60MeeGo

2009-07-24 09:26:27

Google Maps

2009-06-05 09:04:36

Google MobiS60系统

2009-04-17 09:08:44

SymbianS60上网本

2010-06-02 10:33:52

Symbian开发

2009-08-13 09:38:02

Symbian S60Nokia新界面

2009-04-16 09:28:30

NokiaPhoto BrowsS60

2009-04-15 09:01:02

Symbian浏览器诺基亚

2010-06-12 10:08:05

Symbian开发

2009-11-25 14:46:27

2009-06-04 09:24:59

SymbianUCWEB浏览器

2010-05-12 10:44:24

2009-04-21 09:17:10

UCWEB手机浏览器S60

2011-04-29 11:05:57

搜狗手机输入法

2011-09-09 16:23:16

Android Web测试

2011-06-14 11:48:38

Webkit QT

2011-09-09 15:51:58

Android Web应用
点赞
收藏

51CTO技术栈公众号