Ricordo di aver visto in passato un programma che prendeva qualsiasi file e generava un array C che rappresenta quel file come output; sarebbe prevenire la distribuzione di un file separato in alcuni casi. Quale programma Unix/Linux che fa?Programma che crea una matrice C determinato un qualsiasi file?
28
A
risposta
63
4
hexdump -v -e '16/1 "0x%x," "\n"'
genererebbe un C come matrice da stdin, ma non c'è dichiarazione, nessuna parentesi o buona formattazione.
3
10
Per file di grandi dimensioni, la conversione in testo e la successiva analisi del compilatore è inefficiente e non necessaria. Utilizzare objcopy
invece:
objcopy -I binary -O elf32-i386 stuff stuff.o
(. Regolare l'architettura di uscita, se necessario, per le piattaforme non-x86) Poi, una volta si collega nel vostro programma, è possibile accedere in questo modo:
extern char _binary_stuff_start[], _binary_stuff_end[];
#define SIZE_OF_STUFF (_binary_stuff_end - _binary_stuff_start)
...
foo(_binary_stuff_start[i]);
Quella stella un pochi pixel laggiù è stato fatto per questa domanda – xyz