OSDev

для всех
Текущее время: 22 ноя 2017, 00:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Объектные файлы в разных осях
СообщениеДобавлено: 28 ноя 2013, 04:53 

Зарегистрирован: 05 сен 2013, 10:01
Сообщения: 8
Доброго времени суток!

Подскажите, пожалуйста, ответ на такой вопрос:

Объектный файл, который возникает в результате компиляции исходника на Си в ОС Ubuntu с компилятором gcc
и объектный файл, который возникает в результате компиляции того же исходника, но уже в ОС Windows с MinGW или Cygwin,
они имеют разный формат? (у меня они не компонуются в исполняемую программу на отличных ОС, процессор одинаковый).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 28 ноя 2013, 12:17 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
Сам формат, по идее, одинаковый -- ELF (может быть, в MinGW/Cygwin GCC умеет и виндузовые COFFы выдавать, но скорей всё же ELF, что легко проверить: глянуть первые байты объектника). Возможно, компоновщик отказывается их связывать из-за разных атрибутов; надо их посмотреть с помощью какого-нибудь readelf или ещё какой утилиты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 28 ноя 2013, 12:47 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1056
Исполняемые файлы бывают разных форматов PE,ELF, COM, MZ.
Которые состоят из объектных файлов.
OBJ - несколько разновидностей.
Для справки COFF и OMF разновидности OBJ.
Которые в свою очередь тоже делятся на разновидности.

Как следствие - PE имеет несколько разновидностей не меньше 3 штук.
ELF - тоже имеет несколько разновидностей, так что между ОС переносить нельзя.
И от настроек многое тоже зависит.

А разве Cygwin GCC выдает ELF? Он вроде только PE выдаёт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 28 ноя 2013, 13:15 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
pavia писал(а):
А разве Cygwin GCC выдает ELF? Он вроде только PE выдаёт.

Речь идёт об объектных файлах, а не об исполняемых. Исполняемые в Винде, есно, COFF-PE.

Кстати говоря, этой теме делать в этом разделе явно нечего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 28 ноя 2013, 14:44 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
Объектник зависит в основном от целевой ОС (target). К тому же, у gcc и ld есть префиксы в названиях, указывающие на конкретную целевую платформу: mingw32-gcc, i686-linux-gnu-gcc, mingw32-ld, i686-linux-gnu-ld. Для нормальной работы префиксы должны совпадать. Можно использовать файлы и без префикса, тогда просто смотрим gcc -v


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 05 дек 2013, 10:19 

Зарегистрирован: 05 сен 2013, 10:01
Сообщения: 8
Спасибо за ответы. Да, форматы у них получаются разные. А конвертеры существуют?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 05 дек 2013, 18:49 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
Конвертеров нет. Кросс-компиляция делается так, как я писал выше, проблем в общем-то нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объектные файлы в разных осях
СообщениеДобавлено: 05 дек 2013, 23:55 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 208
Как сказать. В некотором смысле, objcopy является таким конвертером. Но это изврат, лучше всё-таки сразу компилировать под правильную целевую систему (target).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB