本地客户端curl库链接



我正在尝试将本地客户端(pNaCl)与naclports的curl库一起使用。我有NaCl SDK版本38,我使用的是naclports的pepper_38分支。在成功构建了curl库之后,我将头包含在项目中,并使用pnacl工具链执行"make"。如果只包含头,一切都会很顺利,但一旦我尝试使用库中的curl函数,我就会在该库中遇到大量"未定义引用"错误:

/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'sigaction'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'recv'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'getsockname'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'bind'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'getsockopt'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'socket'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'connect'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'htons'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'getpeername'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'inet_pton'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'ntohs'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'inet_ntop'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'setsockopt'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'poll'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'send'
/nacl_sdk/pepper_38/toolchain/linux_pnacl/usr/local/lib/libcurl.a: error: undefined reference to 'inflate'

我对氯化钠完全陌生,所以任何建议都会很有帮助。

链接行上似乎缺少一些库。特别是,它们中的大多数似乎都是套接字调用。这些函数是在nacl_io库中定义的。

在大多数工具链中,这些函数是在C库中定义的,因此不必链接任何其他库。但是在NaCl中(当使用newlib库时),有许多缺失的函数是由NaCl_io添加的。

看起来你也需要膨胀,它来自zlib库。所以你的新链接线应该是这样的:

<other link args> -lcurl -lz -lnacl_io -lppapi

需要libppapi.a,因为nacl_io库使用它。

所以我终于编译了我的项目。最后,它归结为图书馆链接的顺序。工作顺序如下:ppapi_cpp ppapi pthread curl ssl crypto z nacl_io。前3个已经在示例项目中,其他的已经添加。

最新更新