2014-10-10 72 views
1

我想使用便携式本机客户端编译pexe文件。我下面的说明在本页面:为什么有未定义的引用PPP_GetInterface,PPP_ShutdownModule和PPP_InitializeModule

https://developer.chrome.com/native-client/devguide/devcycle/building

我试图建立一个pexe和页所示与静态库链接。我的命令行如下。

/home/adev/opt/nacl_sdk/pepper_37/toolchain/linux_pnacl/bin/pnacl-clang++ -o pim-pnacl.pexe pim-pnacl.o -L/home/adev/opt/nacl_sdk/pepper_37/lib/pnacl/Release -lppapi_cpp -lppapi -L../libpidec -lpidec 

我得到以下错误。

/home/adev/opt/nacl_sdk/pepper_37/toolchain/linux_pnacl/sdk/lib/libppapi_stub.a: error: undefined reference to 'PPP_GetInterface' 
/home/adev/opt/nacl_sdk/pepper_37/toolchain/linux_pnacl/sdk/lib/libppapi_stub.a: error: undefined reference to 'PPP_ShutdownModule' 
/home/adev/opt/nacl_sdk/pepper_37/toolchain/linux_pnacl/sdk/lib/libppapi_stub.a: error: undefined reference to 'PPP_InitializeModule' 

回答

1

为了记录,问题在于pim-pnacl.o它需要用-c标志编译。这是编译单个.o文件的正确方法:

/home/adev/opt/nacl_sdk/pepper_37/toolchain/linux_pnacl/bin/pnacl-clang++ -o pim-pnacl.o pim-pnacl.cc -O2 -I/home/adev/opt/nacl_sdk/pepper_37/include -c 

我省略了-c,导致链接器问题。