C'est normal que ça soit long de transformer un code source de 15 Mo en fichier .o, surtout si le source est composé presque uniquement d'une chaîne de caractère : le compilateur n'est pas du tout prévu pour ça et est très peu efficace (reconnaître la chaîne de caractère, la stocker, l'écrire dans un .S, la reconnaître dans le .S, la stocker, l'écrire dans un .o).
Le mieux est de réaliser un petit programme qui, à partir d'un fichier qui contient les données à inclure, fabrique directement un .o contenant ces données et un symbole exporté de pointeur vers ces données. Autrement dit qui fabrique le .o équivalent à ton fichier source géant mais sans avoir à générer ce fichier source et à le faire transformer en .o par un compilateur.
Donc j'aimerai bien le compiler une fois pour toute en .o et ensuite le lier quand j'en ai besoin a un code C qui accéderait aux variables taille et contenu, c'est possible ca ?
Moi je te dis de laisser tomber cette méthode, mais c'est possible, oui. En admettant que ton fichier .c géant se nomme donnees.c, tu les compiles avec :
gcc -c donnees.c
ce qui crée le fichier donnees.o qui exporte les symboles voulus et peut être lié à tout code qui en a besoin (ou pas). En admettant que ton code qui se base sur la taille et le pointeur vers les données s'appelle main.c, il suffira de faire :
gcc donnees.o main.c -o main
pour créer un fichier exécutable "main" complet. Voilà voilà.
[^] # Re: Dégrossissons le problème
Posté par Miair Patreau . En réponse au message autoextractible : théorie. Évalué à 1.
Le mieux est de réaliser un petit programme qui, à partir d'un fichier qui contient les données à inclure, fabrique directement un .o contenant ces données et un symbole exporté de pointeur vers ces données. Autrement dit qui fabrique le .o équivalent à ton fichier source géant mais sans avoir à générer ce fichier source et à le faire transformer en .o par un compilateur.
Donc j'aimerai bien le compiler une fois pour toute en .o et ensuite le lier quand j'en ai besoin a un code C qui accéderait aux variables taille et contenu, c'est possible ca ?
Moi je te dis de laisser tomber cette méthode, mais c'est possible, oui. En admettant que ton fichier .c géant se nomme donnees.c, tu les compiles avec :
gcc -c donnees.c
ce qui crée le fichier donnees.o qui exporte les symboles voulus et peut être lié à tout code qui en a besoin (ou pas). En admettant que ton code qui se base sur la taille et le pointeur vers les données s'appelle main.c, il suffira de faire :
gcc donnees.o main.c -o main
pour créer un fichier exécutable "main" complet. Voilà voilà.