И я скомпилировал проект для Android, все было нормально.
Но когда я скомпилировал проект на MacOS (с Apple Silicon), он потерпел неудачу. И я понял, что ассемблерные коды, скомпилированные на MacOS, будут добавлять ко всем символам префикс _.
Например:
Код: Выделить всё
int test_func();
int main() {
printf("%d\n", test_func());
return 0;
}
Код: Выделить всё
.global test_func
test_func:
mov x0, x1
ret
При компиляции этого кода для Android символ test_func по-прежнему остается самим собой.
Один из способов, который я придумал, — это определить макрос, например: #define test_func _test_func, если платформа соответствует MacOS. Но окажется, что другие разработчики не смогут быстро найти объявления.
Поэтому мне интересно, существует ли элегантный способ поддержки обеих платформ без слишком большого изменения исходного кода.
Подробнее здесь: https://stackoverflow.com/questions/793 ... nd-android
Мобильная версия