前言:本文以chrome為例介紹了瀏覽器移植的基本步驟和要素。
我們知道chrome的瀏覽器核心是webkit,那麼要做瀏覽器移植第一步就是要研究webkit的基本構架。
瀏覽器的編譯器一般都是一要依賴硬體來決定。板子的編譯器就是瀏覽器的編譯器。只不過,要注意的是瀏覽器有些功能的定義和編譯器已經板子的硬體支援有關。
舉例,arm cotext a9的多**功能在晶元級別上是可選的,那麼相對的編譯選項:neon在做編譯的時候就不能使能,否則會報指令錯誤。
瀏覽器相關的開源庫有libdierectfb,libpango,libcairo,libfontconfig,libfreetype,libskia等,大多數都是和瀏覽器的渲覽,graphic引擎,font字型檔和管理等等。
這些開源庫有些是有license的要求的,根據瀏覽器的應用場景去選擇你需要的開源庫。
瀏覽器的基本環境設定,包括瀏覽器需要的工作目錄,配置目錄。
比如 cookie的目錄,lib的載入目錄,jsion的配置目錄,使用者的配置目錄,應用的裝載目錄。
瀏覽器的執行之前,需要執行瀏覽器給到測試**,以確定瀏覽器執行的環境條件,配置條件等是否符合。
通過編譯
chrome的測試案例,base_unittests
make tg=base_unittests
可以生成乙個基礎測試檔案,執行後,回生成對應的測試報告,然後,按照測試報告逐個去解決:
value of: from_native.value()
actual: "\xef\xbc\xa1\xef\xbc\xa2\xef\xbc\xa3.txt"
expected: from_utf8.value()
which is: ""
[ failed ] filepathtest.fromutf8unsafe_and_asutf8unsafe (3 ms)
[----------] 1 test from filepathtest (3 ms total)
[----------] global test environment tear-down
[**********] 1 test from 1 test case ran. (5 ms total)
[ passed ] 0 tests.
[ failed ] 1 test, listed below:
[ failed ] filepathtest.fromutf8unsafe_and_asutf8unsafe
谷歌瀏覽器自帶測試程式執行舉例如下,
[1622/1622] filepathtest.fromutf8unsafe_and_asutf8unsafe (3 ms)
37 tests failed:
filepathtest.fromutf8unsafe_and_asutf8unsafe
fileproxytest.settimes
fileutilproxytest.touch
fileutiltest.changedirectorypermissionsandenumerate
fileutiltest.changefilepermissionsandread
fileutiltest.changefilepermissionsandwrite
fileutiltest.getshmemtempdirtest
jsonfilevalueserializertest.nowhitespace
jsonfilevalueserializertest.roundtrip
jsonfilevalueserializertest.roundtripnested
jsonreadertest.readfromfile
jsonprefstoretest.alternatefile
jsonprefstoretest.alternatefiledne
jsonprefstoretest.alternatefileignoredwhenmainfileexists
jsonprefstoretest.asyncnonexistingfile
jsonprefstoretest.basic
jsonprefstoretest.basicasync
jsonprefstoretest.basicasyncwithalternatefile
jsonprefstoretest.invalidfile
jsonprefstoretest.nonexistentfile
jsonprefstoretest.nonexistentfileandalternatefile
jsonprefstoretest.preserveemptyvalues
jsonprefstoretest.readasyncwithinterceptor
jsonprefstoretest.readwithinterceptor
jsonprefstoretest.removeclearsemptyparent
outofmemorydeathtest.viasharedlibraries
pathservicetest.get
processutiltest.launchprocess
readonlyfileutiltest.contentsequal
readonlyfileutiltest.textcontentsequal
sharedmemoryprocesstest.tasks
sharedmemorytest.anonymou***ecutable
sysstrings.sysnativembandwide
sysstrings.sysnativembtowide
sysstrings.syswidetonativemb
systemmetrics2test.getsystemmemoryinfo
移植嵌入式瀏覽器
需要使用的檔案 cross 2.95.3.tar.bz2 cross arm extra.tar.gz tmake 1.11.tar.gz jpegsrc.v6b.tar.gz e2fsprogs 1.35.tar.gz qt x11 2.3.2.tar.gz qt embedded 2.3.7.t...
嵌入式Web伺服器移植
或者 最新發行版本 0.94.13 解壓 tar xzf boa 0.94.13.tar.gz 直接執行src configure檔案 a 修改 cc gcc 為 cc usr local arm 2.95.3 bin arm linux gcc b 修改 cpp gcc e 為 cpp usr l...
嵌入式Web伺服器移植
文章一僅供個人學習之用,請勿用於他途。n printf n printf n printf n printf n exit 0 交叉編譯生成helloworld.cgi arm softfloat linux gnu gcc o helloworld.cgi helloworld.c 將hellow...