Независима ли архитектура объектных файлов?

Допустим, я создал объектный файл из hello.c на компьютере x86, а затем отправил этот файл на компьютер ARM. Сможет ли он создать исполняемый файл из полученного объектного файла? Предполагая, что мы используем gcc.


Примечание.

Я знаю о кросс-компиляции как о хорошо известном методе, дающем в основном тот же конечный результат, но меня заинтересовал этот конкретный сценарий.

Я также знаю об этом вопросе, но хотел в основном акцентировать внимание на разных архитектурах ЦП. и тот же компилятор, что и я, не нашел этих моментов ясными с моим скромным пониманием.


person Ahmed Farid    schedule 29.07.2014    source источник
comment
Объектные файлы содержат код машинного языка. Различные архитектуры ЦП используют разные машинные языки.   -  person Barmar    schedule 29.07.2014


Ответы (2)


Не существует стандарта для того, что содержит объектный файл. Некоторые могут уже содержать машинные инструкции, другие могут быть независимыми от платформы. Так что, если вообще, это зависит от вашего конкретного компилятора и, таким образом, становится вопросом конкретного приложения.

Например, заголовок ELF содержит информацию о ЦП и ABI, для которых был скомпилирован бинарный файл, и это, к сожалению, заканчивайте обсуждение уже.

person Sebastian Mach    schedule 29.07.2014

Вы можете быть уверены, что это не сработает! Вы просто никогда не сможете выполнить код x86 на процессоре руки. Это не зависит от какой-либо метаинформации, которая помещается в объектный файл, как в ELF. Объектный файл содержит исполняемый код, и процессор руки никогда не сможет выполнить двоичный файл, созданный для другого процессора.

person Klaus    schedule 29.07.2014
comment
Я думаю, что ваша вступительная фраза не имеет большого смысла. Он смотрит на связывание объектных файлов, которые скомпилированы для разных процессоров/ABI/... - person Sebastian Mach; 29.07.2014
comment
Да, другой процессор. Как бы вы запускали код для неправильного процессора? Или мы говорим о кросс-компиляции? - person Klaus; 29.07.2014
comment
Твоя первая фраза больше сбивает с толку, чем просветляет :P - person Sebastian Mach; 29.07.2014