Как получить спецификацию архитектуры BFD для текущей платформы? - PullRequest
3 голосов
/ 13 октября 2011

Я встроил текстовый файл в программу на языке C, используя следующий метод: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967

a.out:prog.c file.text
    objcopy --input binary --output elf64-x86-64 --binary-architecture i386 file.text file.o
    gcc prog.c file.o

objcopy требуется указать цель с помощью "--output"option.

Как я могу установить "--output" в Makefile, чтобы objcopy использовал архитектуру пользователя?

Спасибо.

1 Ответ

1 голос
/ 15 октября 2011

Во-первых: вы не пытаетесь эмулировать возможность -b GCC ld, не так ли?В более подробных терминах: GCC ld может загружать несколько двоичных форматов, см. документацию .Если это то, чего вы хотите достичь, то что-то вроде:

 gcc prog.c -Wl,-b -Wl,binary file.o

может спасти вас весь вызов objcopy.

Хотя я не могу найти документацию по проблеме, выводobjdump -i кажется отсортированным по предпочтениям, поэтому

 `objdump -i | head -n 2 | tail -n 1`

следует расширить до обычной целевой архитектуры.Повторюсь: у меня нет документации по этому поведению, поэтому лучше не полагаться на это вслепую.

...