Я заинтересован в создании проекта с открытым исходным кодом, и для этого требуются библиотеки GNU GLIBC и GLIBM. Если бы мне пришлось кросс-компилировать это под Linux (я использую Ubuntu 11.10 в качестве хоста) для общего (.so) или даже статического (.a) объекта, с архитектурой ARMv7-neon, используя API-9 Какие библиотеки будут предприняты для достижения этого результата, как библиотеки для вызова с JNI Java, чтобы в конечном итоге скомпилировать как APK для распространения?
Учитывая, что я попробовал набор инструментов Google NDK (жестко и легко настраивая $ PATH и $ CC в соответствии с документацией), множество пользовательских наборов инструментов, набор инструментов Code Sourcery и набор инструментов, предложенный для на форуме XDA с использованием crosstool-ng возможно ли получить общий объектный файл, который можно вызывать из JNI и который имеет доступ к полной библиотеке GLIBC на некорневом устройстве Android?
Я искал ответ на этот вопрос, и самое близкое, что я нашел, - это создать GLIBC и GLIBM локально и скопировать соответствующие файлы объектов (.o) и ссылки вручную, используя arm-linux-androideabi-ld NDK. Файл libc.so.6 из Crosstool-ng и CodeSourcery не будет работать, так как перемещение завершится неудачно (с ошибкой неизвестного типа перемещения 19) при вызове библиотеки с использованием Java System.LoadLibarary (). Мои знания о перемещениях не самые лучшие, но из того, что я прочитал, потребуются изменения в заголовочном файле /linux/elf.h, но я точно не знаю, куда идти.
Из того, что я прочитал, я полагаю, что можно создать статический исполняемый файл, в котором все зависимости разрешены при связывании, но тогда, насколько я знаю, не будет возможности упаковать его в файл APK.
Конечно, я не могу быть первым, кто захочет скомпилировать код на языке C для чего-то другого, кроме Bionic, для платформы Android? Существует так много C-проектов, которые можно перенести на Android, и, очевидно, GLIBC уже давно доступен на iPhone.