2015-03-19 3 views
1

Я пытаюсь использовать собственный клиент (pNaCl) с библиотекой curl из naclports. У меня есть SDK версии NaCl 38, и я использую ветку pepper_38 naclports. После успешного создания библиотеки curl я включил заголовок в свой проект и выполнил «make» с помощью инструментальной панели pnacl. Если только заголовок включается все идет хорошо, но как только я пытаюсь использовать локон функцию из библиотеки, я получаю кучу ошибок «неопределенная ссылка» внутри этой библиотеки:Собственная библиотека 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, поэтому любые советы будут очень полезными.

ответ

0

Итак, мне удалось скомпилировать мой проект. В конце концов он подошел к порядку, в котором были связаны библиотеки. Рабочий порядок оказался следующим: ppapi_cpp ppapi pthread curl ssl crypto z nacl_io. Первые 3 были уже в проекте образца, остальные были добавлены.

+0

Я нахожусь на pepper_49 и создал завиток, используя веб-сайты google на pepper_49 bramcj, libcurl.a дает мне ошибку: неопределенная ссылка на «alarm», любая идея? Проблема исчезает, если я также добавляю 'glibc-compat', но curl не работает вообще, если эта библиотека добавлена. – mchiasson

3

Похоже, что вам не хватает некоторых библиотек в вашей линии ссылок. В частности, большинство из них, похоже, являются вызовами сокетов. Эти функции определены в библиотеке nacl_io.

В большинстве наборов инструментов эти функции определены в вашей библиотеке C, поэтому вам не нужно связывать дополнительные библиотеки. Но в NaCl (при использовании библиотеки newlib) существует много отсутствующих функций, которые добавляются nacl_io.

Похоже, вам также нужно надуть, что происходит из библиотеки zlib. Так что вы новая ссылка строка должна выглядеть следующим образом:

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

libppapi.a необходим, поскольку nacl_io библиотека использует его.

+0

Привет, спасибо за ваш ответ. У меня уже были zlib и ppapi, поэтому я добавил nacl_io, но получил точный результат. (также отметить, что вчера я опубликовал небольшую часть, потому что выход был слишком длинным. В основном, я получаю неопределенную ссылку на каждую отдельную функцию/объект в libcurl). Не уверен, что это важно, но я использую пример «часть 2» из папки get_started в SDK. Я добавил curl в Makefile и попытался использовать его в коде. – rok

Смежные вопросы