Сборка программы в формате "a.out"

Модератор: Модераторы разделов

Serg79
Сообщения: 153

Сборка программы в формате "a.out"

Сообщение Serg79 »

По умолчанию компоновщик "ld" формирует исполняемый файл в формате "elf32".
Подскажите, как мне собрать исполняемый файл в формате "a.out"?

Я собираю программу следующей командой:

Код: Выделить всё

gcc -o exe sourc.c
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: Сборка программы в формате "a.out"

Сообщение Aectann »

a.out - это не формат, это всего лишь имя, которое gcc дает по умолчанию продуктам сборки, если не указать опцию -o. Формат бинарника тот же ELF.
My god... it's full of stars!...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Сборка программы в формате "a.out"

Сообщение serzh-z »

Serg79, см. параметр "--oformat". Список поддерживаемых, данной версией binutils, форматов можно получить с помощью "objdump -i". Т.е. для a.out нужно указать --oformat=a.out-i386-linux (gcc <...> -Wl,--oformat=a.out-i386-linux).

На первый взгляд все просто... Но в случае выходного формата --oformat=a.out-i386-linux, ld ожидает на вход объектные файлы a.out. Но умолчальный (Linux) gcc не умеет, как я понимаю, собирать объектные файлы отличные от ELF. Теоретически можно преобразовать объектные файлы ELF в a.out с помощью objcopy, а потом натравить на них, ld - но у меня это не вышло.
Спасибо сказали:
Serg79
Сообщения: 153

Re: Сборка программы в формате "a.out"

Сообщение Serg79 »

serzh-z писал(а):
23.05.2007 14:50
На первый взгляд все просто... Но в случае выходного формата --oformat=a.out-i386-linux, ld ожидает на вход объектные файлы a.out. Но умолчальный (Linux) gcc не умеет, как я понимаю, собирать объектные файлы отличные от ELF. Теоретически можно преобразовать объектные файлы ELF в a.out с помощью objcopy, а потом натравить на них, ld - но у меня это не вышло.

Вот и я о том же. Передача параметра --oformat=a.out-i386-linux у меня приводит к тому, что линковщик начинает ругаться и прекрощает свою работу. Я пытался даже формировать выходной файл и через скрипт линкера (параметр: OUTPUT), но он также отказывается на выходе выдовать "a.out". Хотя команда "objdump -i" сообщает, что данный формат поддерживается.

Вот я и обращаюсь за советом к тем программерам, которые начинали программировать по linux еще на заре его становления, так как в те времена полностью рулил "a.out". Ведь как то можно же получить на выходе "a.out".
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Сборка программы в формате "a.out"

Сообщение Sfunx »

Утилита objcopy умеет преобразовывать форматы....

man objcopy
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Сборка программы в формате "a.out"

Сообщение serzh-z »

Sfunx писал(а):
27.05.2007 13:20
Утилита objcopy умеет преобразовывать форматы....
Не поверите - это не работает, о чем и сказано выше.
Спасибо сказали:
wRAR
Сообщения: 372
ОС: ALT Linux Sisyphus

Re: Сборка программы в формате "a.out"

Сообщение wRAR »

Aectann писал(а):
23.05.2007 14:22
a.out - это не формат, это всего лишь имя

Это не так.
Serg79 писал(а):
23.05.2007 15:57
так как в те времена полностью рулил "a.out". Ведь как то можно же получить на выходе "a.out".


В те времена и gcc на выходе давал a.out.
Вам, видимо, нужен gcc особого вида.
ALT Linux Team
SIM-IM Development Team
Antilamer
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Сборка программы в формате "a.out"

Сообщение Sfunx »

serzh-z писал(а):
27.05.2007 17:24
Не поверите - это не работает, о чем и сказано выше.


Я в hex и bin конвертировал с помощью objcopy - работало..

Проверил для a.out. Действительно - ругается на то, что есть некоторые секции, которые не могут быть определены в a.out...

Может поудалять все секции за исключением .text .data и .bss ?

Кстати - а на кой :?:%: тебе вообще a.out сдался ?
Спасибо сказали:
wRAR
Сообщения: 372
ОС: ALT Linux Sisyphus

Re: Сборка программы в формате "a.out"

Сообщение wRAR »

У меня вроде только на .interp ругалось. Он только эльфам нужен, по идее.
ALT Linux Team
SIM-IM Development Team
Antilamer
Спасибо сказали: