Какая программа создает массив C для данного файла? - PullRequest
34 голосов
/ 20 июля 2009

Я помню, как видел в прошлом программу, которая брала любой файл и генерировала массив C, представляющий этот файл в качестве вывода; в некоторых случаях это помешает распространению отдельного файла. Какая программа для Unix / Linux это делает?

Ответы [ 5 ]

76 голосов
/ 20 июля 2009
12 голосов
/ 26 февраля 2010

Для больших файлов преобразование в текст и затем повторный анализ компилятором неэффективно и не нужно. Используйте objcopy вместо:

objcopy -I binary -O elf32-i386 stuff stuff.o

(При необходимости измените архитектуру вывода для платформ, отличных от x86.) Затем, когда вы свяжете ее с вашей программой, вы сможете получить к ней доступ следующим образом:

extern char _binary_stuff_start[], _binary_stuff_end[];
#define SIZE_OF_STUFF (_binary_stuff_end - _binary_stuff_start)

...

foo(_binary_stuff_start[i]);
4 голосов
/ 20 июля 2009
hexdump -v -e '16/1 "0x%x," "\n"'

сгенерирует массив, похожий на C, из stdin, но нет ни декларации, ни скобок, ни хорошего форматирования.

3 голосов
/ 21 июля 2009

Я знаю, что это вопрос Unix / Linux, но любой, кто просматривает это и хочет сделать то же самое в Windows, может использовать Bin2H .

0 голосов
/ 18 апреля 2018

Самый простой способ:

xxd -i -a filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...