2013-04-07 45 views
1

我想使用PNacl編譯hello_world驅動程序;唯一的問題是我不知道要傳遞給編譯器的選項。Google pnacl:如何使用編譯器/鏈接器

回顧一下,這裏的意圖是從.cc(C++文件)轉換爲.bc(某些我不太瞭解的llvm格式),然後從那裏轉換爲.pexe。

這裏是我的嘗試:

$ TC_PATH=/opt/nacl/pepper_26/toolchain/linux_x86_pnacl/host_x86_64/bin 
$ $(TC_PATH)/clang++ hello_world.cc -o hello_world.bc -I/opt/nacl/pepper_26/include 

那多的作品。現在,鏈接步驟失敗:

$ $(TC_PATH)/clang++ hello_world.bc -o hello_world 
/tmp/hello_world-l8UCWM.o: file not recognized: File format not recognized 

如果我做

$ $(TC_PATH)/clang++ hello_world.bc -o hello_world.pexe --verbose 

我看到司機正試圖用我的系統連接,這當然是行不通的鏈接:

... 
"/usr/bin/ld" --eh-frame-hdr " 
... 

我試圖挖掘一些Makefiles使用的東西,但到目前爲止,我只發現this one,似乎過時了。我應該將哪些標誌傳遞給工具?

回答

3

正如你在回答中提到的,SDK中的Makefiles支持調用pnacl編譯器。所有面向用戶的工具都在 $(SDK_ROOT)/toolchain/linux_x86_pnacl/newlib/bin 或其等效的Windows或Mac上。當像正常編譯器/鏈接器驅動程序pnacl-clang(和pnacl-clang++)一樣使用時,將在編譯時生成可移植對象文件,並在鏈接時生成可移植可執行文件(稱爲.pexe文件)。您可以使用pnacl-translate工具將pexe轉換爲x86-64,x86-32或arm原生客戶端可執行文件(nexe),可以像使用nacl-gcc生成的nexe文件一樣使用。不久還將支持直接使用pexe文件進行瀏覽器內翻譯。

0

好的,這是我發現的。首先,隨SDK分發的新Makefiles知道如何完成整個構建......我還沒有找到那些。基本上,鏗鏘++調用的是$(SDK_ROOT)/toolchain/linux_x86_pnacl/newlib/bin/pnacl-clang++而不是host_x86_64

相關問題