Неопределенные ссылочные ошибки с libssl и libcrypto

Я работаю над сборкой платформы Android с android-4.4_r1 (KRT16S). Я могу без проблем скомпилировать исходный код (это большой проект) в файл *.so.

Если я пытаюсь встроить исходный код в исполняемый файл командной строки с include $(BUILD_EXECUTABLE) (в основном просто оборачивая библиотеку интерфейсом командной строки), я сталкиваюсь со следующими ошибками при компоновке:

out/target/product/flo/obj/lib/libssl.so: error: undefined reference to '__strlen_chk'
out/target/product/flo/obj/lib/libssl.so: error: undefined reference to '__strchr_chk'
out/target/product/flo/obj/lib/libcrypto.so: error: undefined reference to '__strrchr_chk'
out/target/product/flo/obj/lib/libcrypto.so: error: undefined reference to '__sprintf_chk'
out/target/product/flo/obj/lib/libcrypto.so: error: undefined reference to '__strcat_chk'

Я видел ссылку на эту проблему здесь и здесь, но я не уверен, как ее исправить. Нужно ли собирать openssl иначе, чтобы работать в исполняемом файле?

Обновить

Вот как я построил openssl:

  • репозиторий init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1.2
  • синхронизация репо
  • исходная сборка /envsetup.sh
  • обед full_flo-eng
  • перейдите в каталог openssl
  • мм-В

Я не следовал никаким внешним указаниям. Я просто использовал то, что было предоставлено в репо.

1 ответ

Попробуй установить D_FORTIFY_SOURCE=0 при строительстве. Я решил это с помощью libcurl, подробности в последней части здесь http://qiankanglai.me/misc/2014/08/31/android-libcurl/

Другие вопросы по тегам