Добавить исходный код в файл elf - PullRequest
4 голосов
/ 30 ноября 2009

Я хочу добавить свой исходный код C ++ в соответствующий двоичный файл elf, и я ищу лучший способ сделать это. (Я использую несколько версий своего кода, и не каждая версия должна быть зафиксирована в SVN).

Могу ли я просто добавить исходный код, не уничтожая файл elf, используя оператор bash >>? Или objcopy --add-section способ сделать это?

Кстати, есть ли лучшая идея, что просто grep 'рекурсивно извлекает все #include строки из файлов исходного кода, чтобы определить ВСЕ используемые файлы исходного кода?

Ответы [ 2 ]

2 голосов
/ 19 января 2010

Выходные данные препроцессора можно получить из большинства компиляторов C / C ++ с помощью параметра «-E» в командной строке, например,

g++ -E my_file.c -o my_file_preproc.c

objcopy - простая ставка, но я наткнулся на компилятор ресурсов ELF сегодня, и он может быть вам полезен. Он позволяет вам встраивать все, что вы хотите в файл ELF, и даже генерирует код C / C ++, чтобы вы могли добавить его. Таким образом, вы могли бы даже создать библиотеку, с которой ваш код мог бы связать, которая распечатала бы исходный код для исполняемого файла прямо из исполняемого файла.

В связи с этим возникает другая идея ... вместо того, чтобы просто включать весь предварительно обработанный исходный код, у исполняемого файла может быть возможность распечатать используемое уравнение (я).

1 голос
/ 30 ноября 2009

Если вы используете gcc, вы можете использовать флаг -M, чтобы получить файл со списком всех включенных файлов. Он записывается в файл, указанный с -o, например:

gcc -M -c my_file.c -o list_of_included_files.txt
...