Arm v8 elf to mach-o

У меня есть программа на C и сборке Arm v8 (встроенная сборка). Я скомпилировал его для создания 64-битной руки со статически связанным эльфом. Мне нужно иметь возможность запустить это на iPhone, но это дает мне ошибку «Невозможно выполнить двоичный файл». Это потому, что я пытаюсь запустить эльфа, а не мач-о, который нужен для айфона.

Есть ли какой-нибудь конвертер, который может преобразовать эльфа руки v8 в mach-o? Большинство из того, что я видел, это от x86 elf до mach-o


person m b    schedule 03.06.2014    source источник
comment
вы не конвертируете файл ELF в Mach-O. Вы берете ассемблер iOS и переводите с его помощью исходный код сборки.   -  person The Paramagnetic Croissant    schedule 04.06.2014
comment
@user3477950 user3477950 Но мой код находится на встроенной сборке. Который находится в файле .c   -  person m b    schedule 04.06.2014
comment
затем вы используете clang -arch=armv7 на своем Mac для компиляции вашей программы C в объектный файл, совместимый с iOS.   -  person The Paramagnetic Croissant    schedule 04.06.2014
comment
Спасибо @ user3477950. Вы каким-либо образом можете собрать файл obj в mach-o? Я разобрал руку v8 elf.   -  person m b    schedule 04.06.2014
comment
как я уже упоминал, используя ассемблер, который входит в набор инструментов iOS.   -  person The Paramagnetic Croissant    schedule 04.06.2014
comment
Извините, я не очень хорошо знаком с программированием iOS. Когда вы говорите набор инструментов iOS, вы имеете в виду XCode? Как и где найти ассемблер?   -  person m b    schedule 04.06.2014
comment
Пожалуйста, google toolchain.   -  person The Paramagnetic Croissant    schedule 05.06.2014


Ответы (1)


Вместо этого вам следует подумать о правильной настройке цепочки инструментов, компилятора и компоновщика. Вам нужна кросс-инструментальная цепочка именно для этой цели. Если вы использовали инструменты GNU, подумайте об этом: перекомпилируйте ваш кросс-компилятор, а также bin-utils с помощью команды configure с соответствующей целевой опцией (GNU-triplet). Для iPhone это должно быть: ../configure --target=arm64-apple-darwin . . . . a.s.on (RTFM о настройке набора инструментов кросс-компилятора.) Надеюсь, это поможет. В любом случае правильный GNU-триплет определит также и заголовок файла.

person z54686f6d6173    schedule 06.03.2021