Неопределенные ссылочные ошибки с 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/