j'ai un petit projet C sous code::blocks sur ubuntu , je le compile et je l'exécute pour tester à partir du schell mais je veux maintenant créer un fichier exécutable pour l'envoyer à mon professeur, comment le faire???
j'ai un petit projet C sous code::blocks sur ubuntu , je le compile et je l'exécute pour tester à partir du schell mais je veux maintenant créer un fichier exécutable pour l'envoyer à mon professeur, comment le faire???
[MODE SOCRATE]
Quand tu compiles ton projet, quel est le produit de cette compilation?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
voilà le résultat :
Ce que veux dire Médinoc, c'est que si ton projet compile correctement, fonctionne, et que tu l'exécute depuis le Shell, alors tu as DÉJÀ produit ton exécutable.
Tu peux l'envoyer tel quel à ton professeur, mais il aura peut-être besoin des bonnes bibliothèques pour l'exécuter, si son environnement de travail n'est pas identique au tien. Comme tu travailles sous Linux, si ce sont des bibliothèques d'intérêt général (ici GTK, visiblement), la meilleure méthode consiste non pas à les inclure dans une grosse archive (éventuellement auto-extractible, ce qui est probablement ce que tu entends par « exécutable ») mais à laisser l'utilisateur les télécharger lui-même à partir de l'outil fourni avec sa distribution. C'est cet outil qui va se charger de les rapatrier depuis les serveurs officiels et de les installer automatiquement.
Et si tu veux faire les choses vraiment proprement, tu embarques ton programme dans un package *.deb, *.rpm ou autre. Lui, donnera des informations supplémentaires à l'utilisateur et au système, permettra son installation et sa désinstallation automatique, et surtout te permettra de spécifier des dépendances permettant ensuite à l'outil en question d'aller directement télécharger d'autres packages, qui eux contiennent les bibliothèques dont tu as besoin. Mais ça, ce n'est pas au programme de ton cours actuel. Ce n'est pas spécialement difficile (encore que…) mais ça demande malgré tout une certaine quantité de travail qui excédera sûrement celle que tu as consacré à la rédaction de ton programme actuel.
oui le programme compile sans faute et j'ai ces bibliothèques :
#include<gtk/gtk.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<unistd.h>
je voulais que tout le projet soit en un seul fichier, est-ce possible?
Ces fichiers ne sont pas les bibliothèques elles-mêmes (il ne s'agit pas d'un import à la Java) mais les headers qui détaillent leur API et qui expliquent au compilateur comment se servir de ce qu'elles contiennent. Ces fichiers ne sont donc utilisés qu'à la compilation et ont une portée au niveau du système entier, et donc doivent être installées proprement. Soit tu utilises des bibliothèques spécifiques et dans ce cas, tu te reportes à mon commentaire précédent, soit tu utilises des bibliothèques standard et dans ce cas, elles seront forcément déjà en place sur la machine cible.
Dans le cas qui nous occupe, cinq de tes six headers se réfèrent à la bibliothèque standard du C ou à Unix/Posix. Seul GTK constitue une vraie dépendance mais puisque c'est le principal toolkit utilisé sous Linux, il sera déjà en place lui aussi.
Tu peux donc directement envoyer ton exécutable tel quel à ton professeur. S'il a besoin de le recompiler (architectures différentes ou versions du système vraiment trop lointaines), envoie-lui le code source avec éventuellement un Makefile si tu sais les faire.
Partager