1

我想使用PNacl编译 hello_world 驱动程序;唯一的问题是我不知道将哪些选项传递给编译器。

回顾一下,这里的目的是从 .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 "
 ...

我试图用这个东西挖掘一些 Makefile,但到目前为止我只找到 了这个,而且似乎已经过时了。我应该将哪些标志传递给工具?

4

2 回答 2

3

正如您在回答中提到的,SDK 中的 Makefile 支持调用 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 文件进行浏览器内翻译。

于 2013-04-09T05:56:31.200 回答
0

好的,这就是我找到的。首先,与 SDK 一起分发的新 Makefile 确切地知道如何进行整个构建......我还没有找到那些。基本上调用的 clang++$(SDK_ROOT)/toolchain/linux_x86_pnacl/newlib/bin/pnacl-clang++不是 at 的那个host_x86_64

于 2013-04-07T14:22:11.850 回答