| ? ? S60 WebKit?21772編譯教程是本文要介紹的內容,主要是來了解并學習S60 WebKit應用,具體內容的學習來看本文詳解。 1、安裝環境: perl?jdk?S60-SDK-0548-3.0-f.3.215f.zip ?Carbide1.3(其他Carbide應該一樣) ?svn? 2、磁盤映射: subst?X:?C:/Symbian/9.1/S60_3rd? 3、下載webkit svn?co?http://svn.webkit.org/repository/webkit/S60/trunk@21772?S60?到?X:? 4、修改build.bat (1)確定sdk在注冊表的位置正確(同一個SDK安裝多次會不同) my?$sdkhome?= ???$Registry->{ ?"HKEY_LOCAL_MACHINE/SOFTWARE/Symbian/Series?60/3rd?Ed.?SDK?for?Symbian?OS/TargetDir" ???};? (2)carbide的安裝目錄 $cbdhome?=?"E://Nokia//Carbide.c++?v1.3"?unless?-d?$cbdhome;? (3)carbide文件目錄修改 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的錯誤 elf2e32?:?Error:?E1036:?Symbol?_ZTI15CSimpleNotifier?Missing?from?ELF?File?:?../EPOC32/BUILD/S60/MEMMAN/GCCE/UREL/MemMan_sdk.dll. ?elf2e32?:?Error:?E1036:?Symbol?_ZTV15CSimpleNotifier?Missing?from?ELF?File?:?../EPOC32/BUILD/S60/MEMMAN/GCCE/UREL/MemMan_sdk.dll.? 這個錯誤是由于導出函數里面少函數 修改c:/Symbian/9.1/S60_3rd/S60/MemoryManager/Eabi/MemMan_gcceU.DEF???? ?????_ZTI15CSimpleNotifier?@?18?NONAME?;?#<TI>#?改為?_ZTI15CSimpleNotifier?@?18?ABSENT?;?#<TI># ?????_ZTV15CSimpleNotifier?@?23?ABSENT?;?#<VT>#?改為?_ZTV15CSimpleNotifier?@?23?ABSENT?;?#<VT>#? ? 修改c:/Symbian/9.1/S60_3rd/S60/MemoryManager/Eabi/MemMan_sdkU.DEF??? _ZTI15CSimpleNotifier?@?22?NONAME?;?DATA?改為?_ZTI15CSimpleNotifier?@?22?ABSENT?;?DATA ?_ZTV15CSimpleNotifier?@?27?NONAME?;?DATA?改為?_ZTV15CSimpleNotifier?@?27?ABSENT?;?DATA??? 6、"int64_t"數據類型的問題 JavaScriptCore//bindings//HashFunctions.h:35:error:'int64_t'?does?not?name?a?type.. ?????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的上面添加如下的定義: #ifdef?__GCCE__ ?typedef?long?long?int64_t; ?typedef?unsigned?long?long?uint64_t; ?typedef?unsigned?long?uintptr_t; ?typedef?unsigned?long?intptr_t; ?#endif??? 7、代碼中namespace忘記加分號結尾: c:/Symbian/9.1/S60_3rd/S60/WebKit/BrowserView/inc/WidgetExtension.h ?????namespace?KJS?{? ????????class?WidgetEventHandler; ?????}; ?c:/Symbian/9.1/S60_3rd/S60/WebCore/khtml/dom/dom_string.h ?????namespace?khtml?{ ?????????class?Length; ?????}; ?c:/Symbian/9.1/S60_3rd/S60/WebCore/khtml/misc/loader.h ?????namespace?KIO?{ ???????class?Job; ???????class?TransferJob; ?????};????? ? 8、在java script core里面,有幾個函數是沒有定義的,需要手工添加進去: Kwqkhtmlpart.cpp:(.text+0xb1ec):?undefined?reference?to?`_NPN_CreateScriptObject' ?????make[1]:?***?[../EPOC32/RELEASE/GCCE/UREL/WebCore_sdk.dll]?Error?1 ????c:/Symbian/9.1/S60_3rd/S60/JavaScriptCore/group/BMARM/JavaScriptCoreU.def? 打開這個文件,然后在該文件的末尾添加如下定義: _ZN3KJS11Interpreter30createLanguageInstanceForValueEPNS_9ExecStateENS_8Bindings8???? Instance15BindingLanguageERKNS_6ObjectEPKNS3_10RootObjectESB_?@?389?NONAME ?????_ZN3KJS16RuntimeObjectImpC1EPNS_8Bindings8InstanceEb?@?390?NONAME? ?????_ZN3KJS16RuntimeObjectImpC2EPNS_8Bindings8InstanceEb?@?391?NONAME? ?????_ZTIN3KJS16RuntimeObjectImpE?@?392?NONAME?;?#<TI>#? ?????_ZTVN3KJS16RuntimeObjectImpE?@?393?NONAME?;?#<VT>#? ?_ZN3KJS15ProtectedValues20decreaseProtectCountEPNS_8ValueImpE?@?394?ABSENT? ?_ZN3KJS15ProtectedValues20increaseProtectCountEPNS_8ValueImpE?@?395?ABSENT? ?_ZN3KJS8Bindings10RootObject14setInterpreterEPNS_11InterpreterE?@?396?NONAME? ?_ZN3KJS8Bindings10RootObject25removeAllNativeReferencesEv?@?397?NONAME? ?_ZN3KJS8Bindings8Instance32createBindingForLanguageInstanceENS1_15BindingLanguageEPvPKNS0_10RootObjectE?@?398?NONAME? ?????_NPN_CreateScriptObject?@?399?NONAME? 9、 WebCore_sdk.dso?not?found ???Solution:?freeze?exports?by?build?-nfg?and?rebuild?webcore?completly?as?build?-g?webcore? 10、 aiwdialdata.dso:?No?such?file:?No?such?file?or?directory ??Solution:?modify?webkit.mmp?file?as?given?below?#ifndef?__BROWSER_SDK?LIBRARY?aiwdialdata.lib?#endif?? 11、 make[1]:?***?[../EPOC32/RELEASE/GCCE/UREL/browserengine_sdk.dll]?Error?1 ?make:?***?[TARGETWEBKIT]?Error?2 ????? ?elf2e32?:?Error:?E1036:?Symbol?_ZTI10CScrollBar,_ZTI12CScrollThumb,_ZTI15CScrollBarFrame,_ZTI22CScrollBarCornerWindow, ?_ZTV10CScrollBar,_ZTV12CScrollThumb,_ZTV15CScrollBarFrame,_ZTV22CScrollBarCornerWi ?ndow?Missing?from?ELF?File?:?../EPOC32/BUILD/S60/WEBKIT/GCCE/UREL/browserengine_sdk.dll.? Solution: 同8,把相應DEF中,這些已經不存在的方法改成 ABSENT 12、 ????arm-none-symbianelf-ld:?../EPOC32/RELEASE/ARMV5/LIB/HomePage_Sdk.dso:?No?such?file:?No?such?file?or ?????directory ?????make[1]:?***?[../EPOC32/RELEASE/GCCE/UREL/WebUi.exe]?Error?1 ?????make:?***?[TARGETWEBUI]?Error?2 ????? ?????Solution:?freeze?exports?by?build?-nfg?and?rebuild?webcore?completly?as?build?-gn ??Processing?Reindeer.pkg... ?Created?Reindeer.SIS ?Sign?Reindeer.sis... ?Delete?intermediate?files... ?Done,?please?copy?Reindeer.sisx?to?your?phone ??Completed?in:?00:02:09 ??Scanning?build?output?for?errors:?0?found ?Restoring?variant.cfg? 真機編譯成功。 小結:詳解S60 WebKit?21772編譯教程的內容介紹完了,希望通過S60 WebKit內容的學習能對你有所幫助! |