sh_m
Гость
|
|
« : 04-07-2003 05:50 » |
|
Никто не знает, есть ли какая-нибудь утилита которая конвертирует объектные файлы формата elf (обычно его использует GNU), в coff (Microsoft, раньше также использовался GNU) или omf (Borland, Watcom)? Замучился уже: почти неделю ищу. В формат elf можно конвертнуть буквально что угодно, а обрато - проблематично.
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #1 : 04-07-2003 06:05 » |
|
А gcc не умеет сразу в coff компилить? И чего тебе в конечном итоге нужно. Если загрузить куда-нить, то не проще ли сразу уда грузить?
|
|
|
Записан
|
Megabyte be with you!
|
|
|
sh_m
Гость
|
|
« Ответ #2 : 04-07-2003 06:21 » |
|
А gcc не умеет сразу в coff компилить? И чего тебе в конечном итоге нужно. Если загрузить куда-нить, то не проще ли сразу уда грузить? В gcc и во всем что касается GNU я пока что плоховато ориентируюсь(меньше месяца с ним работаю), по крайней мере по HELP-ерам я такой возможности не нашел. В ld вроде бы что-то похожее есть, там можно указывать входной и выходной форматы, но с ним я опять же еще до конца не разобрался. Да и не компилировать мне надо: исходника как такового у меня нет, только нескольколько объектных файлов (в комплекте с *.h) из под Линукса которые нужно слинковать под Watcom в другой операционке. Не спорю, идея авантюрная, но все равно хочу попробовать.
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #3 : 04-07-2003 06:37 » |
|
Понятно. Попробую посмотреть, чего там с gcc можно сделать
|
|
|
Записан
|
Megabyte be with you!
|
|
|
Lex
|
|
« Ответ #4 : 04-07-2003 06:51 » |
|
для ld есть ключик -oformat <format> где format должно быть что-то типа coff-i386. Попробуй запустить ld --help. В начале он напишет какие форматы он поддерживает. возможно придется пересобрать ld для включения поддержки coff
|
|
|
Записан
|
Megabyte be with you!
|
|
|
sh_m
Гость
|
|
« Ответ #5 : 04-07-2003 07:11 » |
|
для ld есть ключик -oformat <format> где format должно быть что-то типа coff-i386. Попробуй запустить ld --help. В начале он напишет какие форматы он поддерживает. возможно придется пересобрать ld для включения поддержки coff Спасибо! Но я еще немножко понадоедаю! Теперь уж действительно элементарный вопрос. Как в ld указать, что на выходе мне нужен именно объектный файл, а не исполняемый? Да и может ли он вообще просто конвертировать объектники, а не собирать из них исполняемуе файлы? Ключик и название формата я буквально вчера нарыл, а застрял именно на этом.
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #6 : 04-07-2003 07:29 » |
|
Чесно говоря не знаю. Мне кажется, что ld этого не умеет. gcc -c компилит файлы. ld эти файлы линкует в исполняемый код.
Кстати нашел еще программку objcopy конвертит файлы из одного формата в другой.
---- Мда, ld оказывается все умеет. ключик -r или --relocateable
|
|
|
Записан
|
Megabyte be with you!
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #7 : 04-07-2003 07:31 » |
|
Но я еще немножко понадоедаю! Кто говорит о надоедании - почитал бы ты как тут обсуждают - тут принято спрашивать пока не поймешь.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
sh_m
Гость
|
|
« Ответ #8 : 04-07-2003 07:39 » |
|
Но я еще немножко понадоедаю! Кто говорит о надоедании - почитал бы ты как тут обсуждают - тут принято спрашивать пока не поймешь. Просто уже на нескольких форумах меня с этим вопросом хоть и вежливо, но послали. Стараюсь быть осторожным и не раздражать спецов глупыми вопросами А вообще мне здесь (в форуме) пока что нравится.
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #9 : 04-07-2003 07:40 » |
|
Ну тут посылают редко и в основном хелпы читать З.Ы. Обрати внимание - я чуть выше поправил сообщение
|
|
|
Записан
|
Megabyte be with you!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #10 : 04-07-2003 07:41 » |
|
Это нужно указать для gcc, а не для ld - ld как раз линкер. gcc -c .....
Насчет поддержки coff - у меня ld 2.11.90.0.8 и он coff не знает. ld: supported targets: elf32-i386 a.out-i386-linux efi-app-ia32 elf32-little elf32-big srec symbolsrec tekhex binary ihex trad-core Возможно в более свежей версии такое есть. Пока про coff есть только поддержка в gcc формата отладочной информации.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Lex
|
|
« Ответ #11 : 04-07-2003 07:45 » |
|
RXL, если ты собираешь gcc с параметрами по умолчанию или используешь уже готовае бинарники, то скорее всего поддержки coff не будет. В исходниках gcc и binutils есть поддержка coff. Сам не собирал, надобности не было. Да использую gcc 2.95.чего-то там.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #12 : 04-07-2003 07:49 » |
|
2Lex: Совершенно верно, я пользую готовые бинарники. Большие программы (типа glibc, gcc, kde, gimp) собирать весьма гиморройно - и параметров много, и сборка идет часами.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
sh_m
Гость
|
|
« Ответ #13 : 04-07-2003 07:52 » |
|
Мда, ld оказывается все умеет. ключик -r или --relocateable Сейчас у меня возможности проверить это нет, но такое сильное чувство, что это как раз то что мне надо!
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #14 : 04-07-2003 07:55 » |
|
Точно, собирал пару раз полностью gcc и все необходимое к нему. муторно и долго, хотя почти все параметры по умолчанию make файлы настраивают. Только если хочешь что-нить очень специфичное, типа поддержки coff , то приходится влезать в дебри параметров.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
sh_m
Гость
|
|
« Ответ #15 : 07-07-2003 07:52 » |
|
Получилось. С поддержкой coff проблем к счатью не возникло (версия утилит - 2.10.1 qnx.nto, операционка - QNX NC 6.2.1 ). А конвертировать могут и objcopy и ld и даже strip.
|
|
|
Записан
|
|
|
|
sh_m
Гость
|
|
« Ответ #16 : 09-07-2003 09:06 » |
|
Новая проблема. Чем отличаются форматы coff-объектников gcc и Microsoft? Или подскажите, где взять описание формата объектного файла coff для Microsoft. (для gcc я уже нашел)
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #17 : 09-07-2003 09:18 » |
|
|
|
|
Записан
|
Megabyte be with you!
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #18 : 09-01-2005 23:11 » |
|
Есть несколько более простых решений: - поставить MinGW (www.mingw.org), который является ничем иным, как gcc, производящем exe файлы. На нем можно прогать даже VxD-шки. понимает статические библиотеки *.a и elf объектники
MinSYS позволяет запускать configure-скрипты
- можно попробывать использовать CygWin, но он в этом смысле настолько избыточен, что такие вещи, как VxD компиллировать, по-моему там нельзя
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #19 : 11-01-2005 17:27 » |
|
Арсений, потому, что CygWin-программы требуют run-time dll, имулирующей unix-окружение - для драйверов это явно не подходит.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #20 : 12-01-2005 20:08 » |
|
А MinGW - нет
|
|
|
Записан
|
|
|
|
|