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. 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. 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. elf2e32 : Error: E1036: Symbol _ZTI10CScrollBar,_ZTI12CScrollThumb,_ZTI15CScrollBarFrame,_ZTI22CScrollBarCornerWindow,
  4. _ZTV10CScrollBar,_ZTV12CScrollThumb,_ZTV15CScrollBarFrame,_ZTV22CScrollBarCornerWi
  5. 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. Solution: freeze exports by build -nfg and rebuild webcore completly as build -gn
  6. Processing Reindeer.pkg...
  7. Created Reindeer.SIS
  8. Sign Reindeer.sis...
  9. Delete intermediate files...
  10. Done, please copy Reindeer.sisx to your phone
  11. Completed in: 00:02:09
  12. Scanning build output for errors: 0 found
  13. Restoring variant.cfg

真机编译成功。

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

转载于:https://blog.51cto.com/4536592/908558

详解S60 WebKit 21772编译教程相关推荐

  1. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  2. 详解LAMP源码编译安装

    实战:LAMP源码编译安装 家住海边喜欢浪:zhang789.blog.51cto.com 目录 详解LAMP源码编译安装 LAMP简介 一.准备工作 二.编译安装 Apache 三.编译安装 MyS ...

  3. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...

  4. springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程

    1. 导入依赖 首先新建一个springboot项目,勾选组件时勾选Spring Web.JDBC API.MySQL Driver 然后导入以下整合依赖 org.mybatis.spring.boo ...

  5. android ui框架详解,多图详解 “Android UI”设计官方教程(二)

    编者注:本文为Android的官方开发者博客发了一份幻灯片的翻译文档的第二部分,专门介绍了一些Android UI设计的小贴士,我们在介绍这个幻灯片的第一部分<多图详解 "Androi ...

  6. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备 1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码 代码如下:# ...

  7. qt4.7 mysql_详解Qt 4.7编译和访问Mysql驱动

    Qt4.7编译和访问Mysql驱动是本文要介绍的内容,不多说,我们来看内容.今天摸索了一上午,终于用qt连上mysql了 1.安装一个mysql5.0以上版本*** 要求:(1)安装路径不要有空格和点 ...

  8. qt4.7 mysql 6.3 版本_详解Qt 4.7编译和访问Mysql驱动

    Qt4.7编译和访问Mysql驱动是本文要介绍的内容,不多说,我们来看内容.今天摸索了一上午,终于用qt连上mysql了 1.安装一个mysql5.0以上版本*** 要求:(1)安装路径不要有空格和点 ...

  9. 国外问卷调查项目详解(真正的保姆级教程)

          大家好,我是小飞匠,也聊了不少关于国外问卷调查项目的话题,但是不少朋友对于国外问卷调查还是不太了解,今天来做一个国外问卷调查项目详解(全网最全最细致的教程),如果能够给到大家一点点帮助那也 ...

最新文章

  1. 微信小程序开发系列七:微信小程序的页面跳转
  2. Spring系列合并
  3. 工业以太网交换机的概念及其主要功能介绍
  4. Linux下使用ps命令来查看Oracle相关的进程
  5. 数据通过蓝牙传输中...70.46k/s
  6. android.mk if else,gradle - 如何在Android Studio中使用我自己的Android.mk文件 - SO中文参考 - www.soinside.com...
  7. 单片机毕业设计 超声波雷达可视化系统
  8. 用户故事与敏捷方法—发布计划
  9. 分享一个超酷创建互动文档的Javascript类库 - tangle
  10. 解析MySQL ibd文件
  11. PythonJava版【LeetCode】简单题答案整理01
  12. matplotlib—画正弦、余弦函数图
  13. 使用Haproxy Exporter监控Sparkthrift存活率
  14. 【2022.1】触控板可以点击但无法滑动ThinkPad一个驱动问题
  15. 原来华为手机的语音助手这么好用,说话即可语音翻译,方便又实用
  16. 15分钟了解TiDB
  17. Linux read的用法
  18. vue+ echarts实现地图(中国地图)
  19. 上传文件失败问题 error为7
  20. oracle ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接

热门文章

  1. 修改form_Vue通过阿里云oss的url连接直接下载文件并修改文件名
  2. java实现缓存中间件,Redis,分布式系统中不可少的缓存中间件
  3. dvt高危患者的护理措施_dvt的预防及护理
  4. Web SQL介绍,web sql中增删改查、数据存储位置、运行脚本、建表建库
  5. mysql数据库的存储过程不用学吗,MySql数据库之存储过程学习_MySQL
  6. 方法论:如何从0到1搭建一套完整的邀请体系
  7. 产品经理的冬天来了嘛?
  8. 2020年中国新世代用户视频消费行为洞察
  9. PRD:「FITLIFE」小程序产品需求文档(用户端)
  10. 百度平台K12人群洞察报告