Intégration de ressources dans des exécutables avec GCC
Lors du développement d'applications C/C avec GCC, il peut être pratique d'intégrer des données binaires externes directement dans l'exécutable. Cela simplifie la distribution en éliminant le besoin de fichiers de ressources séparés.
Capacités d'intégration de GCC
GCC propose deux approches principales pour l'intégration de ressources :
Utilisation ld :
Utiliser bin2c/bin2h Utilitaires :
Exemple avec ld
Voici un exemple plus détaillé utilisant ld :
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { printf("Address of start: %p\n", &_binary_foo_bar_start); printf("Address of end: %p\n", &_binary_foo_bar_end); for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar(*p); } return 0; }
Dans cet exemple, un fichier nommé foo.bar est converti en fichier objet (foo.bar.o) using :
ld -r -b binary -o foo.bar.o foo.bar
L'éditeur de liens inclut ensuite foo.bar.o lors de la construction de l'exécutable, permettant l'accès aux données binaires via les symboles _binary_foo_bar_start et _binary_foo_bar_end.
Détermination de la taille
Pour déterminer la taille de la ressource intégrée, utilisez :
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!