Intégrer des ressources dans des exécutables et des bibliothèques partagées avec GCC
Énoncé du problème :
Comment intégrer statiquement des fichiers de ressources dans des fichiers de bibliothèque exécutables et partagés à l'aide de GCC compilateur ?
Solution :
Pour intégrer des fichiers de ressources dans des programmes binaires à l'aide de GCC, suivez ces étapes :
Créez le fichier objet : Utilisez l'utilitaire objcopy du package GNU binutils pour créer un fichier objet contenant les données binaires de le fichier de ressources. Par exemple, pour convertir le fichier binaire foo-data.bin en fichier objet :
objcopy -B i386 -I binary -O elf32-i386 foo-data.bin foo-data.o
Considérations supplémentaires :
Exemple d'utilisation :
L'extrait de code suivant montre comment utiliser les données de ressources intégrées :
extern uint8_t foo_data[] asm("_binary_foo_data_bin_start"); extern uint8_t foo_data_size[] asm("_binary_foo_data_bin_size"); extern uint8_t foo_data_end[] asm("_binary_foo_data_bin_end"); size_t foo_size = (size_t)((void *)foo_data_size); void *foo_copy = malloc(foo_size); assert(foo_copy); memcpy(foo_copy, foo_data, foo_size);
Ce code lit la ressource foo-data intégrée, détermine sa taille et en fait une copie dans la mémoire du programme.
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!