Как элегантно поддерживать сборку ARM как на MacOS, так и на Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как элегантно поддерживать сборку ARM как на MacOS, так и на Android?

Сообщение Anonymous »

Сейчас я пишу проект, используя язык C и ассемблер напрямую.
И я скомпилировал проект для Android, все было нормально.
Но когда я скомпилировал проект на MacOS (с Apple Silicon), он потерпел неудачу. И я понял, что в кодах, скомпилированных на MacOS, ко всем символам кроме ASM-кодов будет добавлен префикс _.

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

Например:

Код: Выделить всё

int test_func();

int main() {
printf("%d\n", test_func());
return 0;
}

Код: Выделить всё

.global test_func
test_func:
mov x0, x1
ret
При компиляции этого кода в MacOS основная функция фактически вызывает _test_func() вместо test_func().
При компиляции этого кода для Android символ test_func по-прежнему остается самим собой.
Поэтому мне интересно, есть ли элегантный способ поддержки обеих платформ без слишком большого изменения исходного кода.

Подробнее здесь: https://stackoverflow.com/questions/793 ... nd-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»