2014-11-09 58 views
2

我不熟悉Chrome應用程序開發和Native Client/PNaCL管道。我對在Chrome應用程序中使用現有C代碼/庫的過程感到困惑。常見問題和NaCL官方文檔表明,使用現有代碼很容易,也是開發Chrome應用程序的優勢之一。如何將現有C庫與Chrome Native Client一起使用?

但是,還提到了nacl-ports,這是在Native Client應用程序中使用的移植C庫的官方列表。

如果我使用了一些隨機C庫,那麼在我的Chrome應用程序中實際使用它的過程是什麼?這個問題很愚蠢,但我對這個過程感到困惑。我是否必須使用NaCL編譯器重新編譯源代碼?在哪裏可以找到這個SDK?

這個FAQ還提到像fork,文件I/O這樣的東西在庫中是不允許的,所以我將不得不重寫任何代碼來做這些事情,這是否正確?底線:我有一個現有的C語言庫。在Chrome應用程序中正確使用它並調用它的過程是什麼?

+0

我手邊沒有URL,但是Google的網頁上有關於如何爲NaCL編譯C的信息。你將不得不以這種方式編譯你的庫。你不能按照編譯的方式使用它。此外,NaCL代碼無法對系統調用操作系統。沒有文件I/O,沒有fork/exec,沒有其他任何類似的東西。 NaCL的目的是加快處理速度並利用已有的C代碼,而不是讓Chrome應用程序對基礎系統有額外的訪問權限。 – 2014-11-09 15:04:59

+0

@MarcRochkind謝謝你的信息。我找到了你提到的關於編譯的信息。你能澄清'無文件I/O'部分嗎? NaCL確實擴展了我認爲可以訪問本地文件系統的HTML5存儲API。所以說我們可以做文件I/O是安全的,我們只需要通過nacl_io並替換庫源文件中的原始文件讀/寫調用? – user2666425 2014-11-10 20:53:59

+0

對不起。我的意思是說通過直接調用操作系統(Linux)沒有文件I/O。當然,Chrome API調用也可以。 – 2014-11-10 21:54:48

回答

2

簡短的回答是,你將不得不用NaCl C編譯器重新編譯你的庫。

您可能想要看看naclports:此存儲庫包含許多通用C庫到Native Client的端口。您可以更容易地瀏覽源碼here

至於文件I/O,我們經常建議在移植現有代碼時使用nacl_io庫。這提供了一個POSIX接口(例如fopen/fclose/fread等)。當使用nacl_io時,許多移植的庫不需要修改。

相關問題