OSDev http://osdev.su/ |
|
Объектные файлы в разных осях http://osdev.su/viewtopic.php?f=6&t=828 |
Страница 1 из 1 |
Автор: | mikesmmm [ 28 ноя 2013, 04:53 ] |
Заголовок сообщения: | Объектные файлы в разных осях |
Доброго времени суток! Подскажите, пожалуйста, ответ на такой вопрос: Объектный файл, который возникает в результате компиляции исходника на Си в ОС Ubuntu с компилятором gcc и объектный файл, который возникает в результате компиляции того же исходника, но уже в ОС Windows с MinGW или Cygwin, они имеют разный формат? (у меня они не компонуются в исполняемую программу на отличных ОС, процессор одинаковый). |
Автор: | SII [ 28 ноя 2013, 12:17 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
Сам формат, по идее, одинаковый -- ELF (может быть, в MinGW/Cygwin GCC умеет и виндузовые COFFы выдавать, но скорей всё же ELF, что легко проверить: глянуть первые байты объектника). Возможно, компоновщик отказывается их связывать из-за разных атрибутов; надо их посмотреть с помощью какого-нибудь readelf или ещё какой утилиты. |
Автор: | pavia [ 28 ноя 2013, 12:47 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
Исполняемые файлы бывают разных форматов PE,ELF, COM, MZ. Которые состоят из объектных файлов. OBJ - несколько разновидностей. Для справки COFF и OMF разновидности OBJ. Которые в свою очередь тоже делятся на разновидности. Как следствие - PE имеет несколько разновидностей не меньше 3 штук. ELF - тоже имеет несколько разновидностей, так что между ОС переносить нельзя. И от настроек многое тоже зависит. А разве Cygwin GCC выдает ELF? Он вроде только PE выдаёт. |
Автор: | SII [ 28 ноя 2013, 13:15 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
pavia писал(а): А разве Cygwin GCC выдает ELF? Он вроде только PE выдаёт. Речь идёт об объектных файлах, а не об исполняемых. Исполняемые в Винде, есно, COFF-PE. Кстати говоря, этой теме делать в этом разделе явно нечего. |
Автор: | Himik [ 28 ноя 2013, 14:44 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
Объектник зависит в основном от целевой ОС (target). К тому же, у gcc и ld есть префиксы в названиях, указывающие на конкретную целевую платформу: mingw32-gcc, i686-linux-gnu-gcc, mingw32-ld, i686-linux-gnu-ld. Для нормальной работы префиксы должны совпадать. Можно использовать файлы и без префикса, тогда просто смотрим gcc -v |
Автор: | mikesmmm [ 05 дек 2013, 10:19 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
Спасибо за ответы. Да, форматы у них получаются разные. А конвертеры существуют? |
Автор: | Himik [ 05 дек 2013, 18:49 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
Конвертеров нет. Кросс-компиляция делается так, как я писал выше, проблем в общем-то нет. |
Автор: | Nable [ 05 дек 2013, 23:55 ] |
Заголовок сообщения: | Re: Объектные файлы в разных осях |
Как сказать. В некотором смысле, objcopy является таким конвертером. Но это изврат, лучше всё-таки сразу компилировать под правильную целевую систему (target). |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |