Как элегантно поддерживать сборку 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

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