Подтвердить что ты не робот

Разница между armeabi и armeabi-v7a

Насколько я могу судить по документам, разница между двумя поддерживаемыми ароматами архитектуры ARM в Android NDK заключается только в наборе поддерживаемых инструкций CPU. Неужели это так? Разница между вызовами или вызовами системы, или что-то еще не существует?

Мне интересно, что произойдет, если я скомпилирую модуль в объектный файл ARM (например, с компилятором, отличным от NDK - Free Pascal), указав ARMv6 в качестве архитектуры, а затем связать его с armeabi и armeabi-v7a разделяемые библиотеки. Биты FPC не должны выполнять ни системные вызовы, ни вызовы Java, кроме как через мой собственный интерфейс на основе C.

EDIT: всемирная библиотека Hello, скомпилированная с FPC для ARM, ссылки и запускается под эмулятором ARMv7a.

4b9b3361

Ответ 1

Вы определенно можете запустить разделяемую библиотеку armeabi на v7, и вы можете вызывать ее экспортированные функции из другого модуля. Поэтому, чтобы быть в безопасности, я создал бы отдельный файл .so из вашего кода Pascal, придерживаясь armeabi (возможно, с некоторыми обертками C/С++) и использую эту общую библиотеку с вашими библиотеками armeabi и armeabi-v7a, Самый простой способ загрузить все в правильном порядке - использовать

System.loadLibrary("pascal"); // armeabi
System.loadLibrary("c++"); // the platform will choose armeabi or armeabi-v7a