• # Dégrossissons le problème

    Posté par . En réponse au message autoextractible : théorie. Évalué à 2.

    Dans un script shell, je sais vraiment pas comment on fait.

    Dans un programme auto-extractible binaire, je suppose que le problème se situe dans le fait d'inclure un bloc de données arbitraire et arbitrairement grand, la taille de ce bloc de données, et le moyen d'accéder à ces données.

    A priori, je me contenterais de définir deux variables importées dans le fichier C qui contient la fonction main() et l'algorithme de décompression :

    extern unsigned int code_size;
    extern void* code;

    Ainsi, l'algorithme de décompression n'a qu'à se reposer dessus et le fichier compile sans accroc.
    Reste à créer un fichier .o qui exporte ces variables avec le contenu correct.
    Pour ça je ne peux que suggérer de lire la doc expliquant le format de fichier ELF ( http://en.wikipedia.org/wiki/Executable_and_Linkable_Format ), et d'apprendre à utiliser libelf ( http://www.mr511.de/software/english.html ).

    Il n'y a pas besoin de savoir faire grand-chose : juste créer un fichier ELF relocalisable (.o) qui contient des données en lecture seule, exportées sous les noms "code_size" et "code".

    Une fois un tel fichier créé, il se lie sans problème avec le fichier qui contient l'algo de décompression, et si l'algo est correct, ça devrait marcher sans problème.

    Je suggère de faire des essais avec des problèmes triviaux d'abord.