基礎 嵌入式瀏覽器移植基本要素

2021-07-23 02:22:58 字數 2971 閱讀 9715

前言:本文以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...