Я помню, что в прошлом я видел программу, которая бы взяла любой файл и сгенерировала массив C, представляющий этот файл в качестве вывода; в некоторых случаях это предотвратит распространение отдельного файла. Какая программа Unix/Linux делает это?
Какая программа создает массив C для любого файла?
Ответ 1
Ответ 2
Для больших файлов преобразование в текст, а затем повторное компиляцию неэффективно и не нужно. Вместо этого используйте 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]);
Ответ 3
hexdump -v -e '16/1 "0x%x," "\n"'
будет генерировать C-подобный массив из stdin, но нет объявления, никаких скобок или хорошего форматирования.
Ответ 4
Я знаю, что это вопрос Unix/Linux, но любой, кто ищет это, который хочет сделать то же самое в Windows, может использовать Bin2H.