pouvez vous m'aider à compiler des sources ?

pouvez vous m'aider à compiler des sources ? - C++ - Programmation

Marsh Posté le 08-06-2003 à 09:26:57    

Bonjour à tous,
 
je suis débutant et souhaite apprendre à compiler. Je ne suis pas développeur/programmeur.
 
J'ai fait une recherche de fichiers en .c et .h sur mon ordinateur pour m'entrainer mais je n'ai pas trouvé de répertoire qui contienne à la fois des fichiers .c et .h
 
Je suis perdu. Finalement, je ne sais pas à quoi doivent ressembler les fichiers qui me permettront d'effectuer une compilation avec make.
 
Pouvez m'indiquer une adresse sur Internet qui me permette de télécharger un fichier compressé (ou un dossier) contenant tous les fichiers habituels permettant de réaliser une compilation ?
 
Merci d'avance de votre réponse car j'ai besoin d'un exemple très concret.  
 
note : j'utilise une debian potatoe ; je sais, j'ai choisi une distribution pas facile pour un débutant

Reply

Marsh Posté le 08-06-2003 à 09:26:57   

Reply

Marsh Posté le 08-06-2003 à 09:52:32    

Commence par acheter un bouquin...et lis les premiers chapitres!

Reply

Marsh Posté le 08-06-2003 à 10:03:00    

Merci, je lis déjà pas mal  :pt1cable: et j'essaie toujours de compléter mes recherches sur Internet et en recherchant sur ce forum (avec le bouton "rechercher" ).
 
Voici la doc que je lis :
http://casteyde.christian.free.fr/ [...] book1.html
 
Je suis dans le chapitre 7 :
http://casteyde.christian.free.fr/ [...] ml#AEN4491

Reply

Marsh Posté le 08-06-2003 à 10:04:36    

Pourquoi je souhaite savoir comment compiler ? Parce que c'est indispensable sous Linux pour installer des nouveaux programmes. Mais comme je suis newbie, je ne sais pas où trouver un exemple concret.

Reply

Marsh Posté le 08-06-2003 à 10:07:44    

C'est probablement expliqué dans la suite...
Et compiler n'est pas forcément nécéssaire, loin de là!
Le système de gestion des paquetages de la debian t'évite cette étape dans 90% des cas!
apt-get est ton ami!

Reply

Marsh Posté le 08-06-2003 à 10:35:12    

skeye a écrit :

C'est probablement expliqué dans la suite...
Et compiler n'est pas forcément nécéssaire, loin de là!
Le système de gestion des paquetages de la debian t'évite cette étape dans 90% des cas!
apt-get est ton ami!


 
Merci pour l'info, c'est sympa.
Je souhaiterais quand même savoir comment faire pour compiler et je ne pars pas de "zéro", voilà déjà ce que j'ai compris mais c'est peut-être faux, c'est pour ça que je souhaiterais un exemple sur Internet (télécharger un fichier compressé ou le contenu d'un dossier contenant tous les fichiers de base pour réaliser une compilation) :
 
1) on réunit :
- des fichiers sources (*.c)
- des fichiers en-têtes système (*.h) (également appelés "fichiers de déclaration du système" ?)
> le résultat de la compilation permet d'obtenir des fichiers binaires (également appelés fichiers objets)
 
2) pour générer l'exécutable, il faut encore lier les différents fichiers objets. L'éditeur de liens s'en occupe. Est-ce que les références partielles -contenues dans les différents fichiers objets et faisant le lien entre eux- sont suffisantes pour que l'éditeur de lien finisse le travail tout seul, il semble que oui.
 
Ma question est : pour obtenir un exécutable à partir de sources écrites en langage C, de quoi a-t-on besoin pour réaliser ce travail avec make ?
- des fichiers .c (sources) + .h (en-têtes)
 
ou alors :
- des fichiers .o (objets) directement et seulement
 
Maintenant, je souhaite faire un exemple concret (la seule chose que je demande, c'est : où trouver un ensemble complet me permettant de faire mes petits essais ?  ;) )
 
Bon, j'espère que ce que j'ai écrit est exact, je n'en suis pas sûr, c'est pour ça que j'aimerais vraiment passer à la pratique.
 
Merci d'avance


Message édité par s-gaia le 08-06-2003 à 10:37:36
Reply

Marsh Posté le 08-06-2003 à 12:18:32    

je crois que tu as rien compris.
deja ce post devrai etre en section os alternatif.
tu telecharges le programme que tu veux installer, tu decompresse ( j'espere que tu sais faire ), tu va dans le repertoire, tu lis le INSTALL et la tu peux etre sur qu'il va y avoir marquer
./configure
make
su
make install
toi tu as rien a faire hein
 
edit : je te donne pas d'exemple, tu prend n'importe quelle soft que tu as envie d'installer, tu prends les sources, y a tout a l'interieur.


Message édité par xWillow le 08-06-2003 à 12:19:17
Reply

Marsh Posté le 08-06-2003 à 15:36:28    

Tiens si ca se passe sous Linux... je te balance mon Makefile Type... ca pourra peut etre t aider :)
 

Code :
  1. ##
  2. ## Makefile
  3. ##
  4. ## Made by corpsegrinder
  5. ## Login   <corpsegrinder@codegrinder.freebsd>
  6. ##
  7. ## Started on  Wed Nov 20 14:03:50 2002 corpsegrinder
  8. ## Last update Wed Jun  4 11:42:01 2003 corpsegrinder
  9. ##
  10. # Program infos
  11. #----------------------------------------
  12. NAME    = prg_name   /* le nom de ton binaire */
  13. SRCS    = sources.c  /* tes sources en .c */
  14. OBJS    = $(SRCS:.c=.o)
  15. # Absolute Home LinK
  16. #----------------------------------------
  17. ABS_LK = /home/corpsegrinder/
  18. # Libs
  19. #----------------------------------------
  20. LIBX    = -L/usr/X11R6/lib -lX11 -lXext
  21. /* e pis ca d autre lib.. rajoute les ... */
  22. # Bonus ;p
  23. #----------------------------------------
  24. COMPILER = gcc
  25. TAR      = tar
  26. TAR_NAME = $(NAME)
  27. # Mouaha ;)
  28. #----------------------------------------
  29. $(NAME) : $(OBJS)
  30.         $(COMPILER) -o $(NAME) $(OBJS) $(LIBX)
  31.         rm -fr *~ *.o core* *.core *\#
  32. all     : $(OBJS)
  33.         $(COMPILER) -o $(NAME) $(OBJS) $(LIBX)
  34.         rm -fr *~ *.o core* *.core *\#
  35. tar     :
  36.         $(TAR) -cvf $(TAR_NAME).tar *
  37. rm_tar  : clean
  38.         rm -fr $(TAR_NAME).tar
  39. clean   :
  40.         rm -fr *~ *.o core* *.core *\#
  41. fclean  : clean
  42.         rm -fri $(NAME)

Reply

Marsh Posté le 09-06-2003 à 04:55:38    

S-GAIA a écrit :


je suis débutant et souhaite apprendre à compiler. Je ne suis pas développeur/programmeur.


 
Honnetement si tu n'es pas programmeur tu n'en as rien a foutre
de savoir compiler...
 
C'est quoi cette pollution des cerveaux? c'est la nouvelle mode sous Unix ?
 
LeGreg

Reply

Marsh Posté le 09-06-2003 à 08:16:50    

Merci beaucoup corpsegrinder pour ta bonne humeur. C'est toujours sympa d'avoir des réponses qui vous encouragent.  :)  
 
Ensuite, je peux encore remercier xWillow pour sa réponse.
 
Pour les autres, vous ne voulez pas que je sache comment compiler apparemment.  :pfff:  
 
legreg, tu te sens très supérieur. Tant mieux, je ne prétends pas être un gros cerveau comme toi.
 
Je l'ai déjà dit, je ne connais pas linux et j'ai effectivement dû me planter de section. J'aurai dû poster dans OS Alternatif.
 
J'étais trop absorbé par l'aspect apparent "programmation" de ma question. D'ailleurs, après une recherche sur le forum d'hardware, j'ai trouvé une dizaine de réponses traitant de la compilation.
 
Pour finir, je souhaite vous expliquer pourquoi je démarre sous Linux : ce n'est pas par phobie des systèmes Microsoft. C'est parce que j'apprends des choses nouvelles (le swap, les droits d'utilisateurs très complexes et intéressants, les tubes et redirections, le système des fichiers spéciaux de périphériques, ... tout cela est très intéressant). Par la suite, je souhaite aussi apprendre des notions nouvelles en réseau et linux est très bien pour ça. Bien sûr, la route est très longue.
 
Alors, mo cher legreg, tu vois sûrement mieux, maintenant, pourquoi je souhaite savoir comment compiler : c'est par PEDAGOGIE. Par ailleurs, voici ce qu'écrit un ingénieur informatique à ce sujet sur son site :
 

Citation :

Ce chapitre présente les notions de base de compilation et de fichiers sources de programmes. Il est certain que le lecteur de ce document n'a pas forcément l'intention de programmer sous Linux, cependant, il est nécessaire de connaître les notions qui vont être décrites ici. En effet, il n'est pas rare, voire il est même courant, d'avoir à recompiler une application lorsqu'on travaille avec Linux. Cela n'est pas étonnant, quand on sait que toute bonne installation passe par la recompilation du noyau de Linux ! La raison de cet état de fait provient sans nul doute du fait que la licence GNU impose de fournir les fichiers sources aux utilisateurs d'une part, et que le langage C et Unix sont historiquement fortement liés.


 
Alors, pour la "polution des cerveaux", tu repasseras legreg. Je suis sûrement moins intelligent que toi mais plus ouvert aux questions des autres. Il n'y a pas de questions idiotes. Je n'aime pas les forumeurs qui mettent une sale ambiance dans les topics par gratuité, comme ça.


Message édité par s-gaia le 09-06-2003 à 08:28:19
Reply

Marsh Posté le 09-06-2003 à 08:16:50   

Reply

Marsh Posté le 09-06-2003 à 10:10:03    

S-GAIA a écrit :


Alors, mo cher legreg, tu vois sûrement mieux, maintenant, pourquoi je souhaite savoir comment compiler : c'est par PEDAGOGIE. Par ailleurs, voici ce qu'écrit un ingénieur informatique à ce sujet sur son site :


 
Oui c'est bien ce que je dis, c'est quelques personnes
sous Linux qui polluent les cerveaux en leur expliquant
qu'ils auront une vie meilleure en recompilant
tout ce qui leur passe sous la main (leur noyau, leur driver, leurs applications)  
or de deux :
- tu n'apprends rien en recompilant une application
a part comment compiler (lapalissade).. mais si tu sais juste compiler et tu ne veux pas programmer ca ne te servira a rien a part a pouvoir peut-etre recompiler la prochaine application qui te passera sous la main. Si c'est aussi simple que de taper "make" alors ca ne valait pas trop le derangement (et ca te fait perdre 5 min a plusieurs heures suivant la taille de l'application). Si ça demande de modifier les sources et de jouer avec un milliard d'options alors c'est un peu trop de derangement pour installer une application.
- de deux "Cela n'est pas étonnant, quand on sait que toute bonne installation passe par la recompilation du noyau de Linux !" cette phrase me fait rire. Non pas parce que j'ai une dent contre Linux, mais tout simplement parce que ca fait peur pour les gens qui veulent simplement installer leur OS et qui doivent passer par la phase compilation. Je vois deux effets pervers a ça, la premiere c'est que l'interet de la compilation se perd puisque tous les programmes sont distribues sous forme de source. Pour quelqu'un qui veut recuperer les sources pour les etudier, les modifier ou se proteger tout a fait d'accord. Pour l'utilisateur lambda, c'est a se demander pourquoi on a invente la compilation. Bientot sur votre OS, il va falloir un compilateur de tous les langages, ainsi que tous les SDKs du marche (ainsi que faire cohabiter les versions incompatibles entre elles), les jeux vont venir sous forme de fichiers 3dsmax qu'il faudra exporter a la main et jouer avec des tas d'options qui n'auront aucun sens pour vous mais avec un peu de chance apres tout ca vous pourrez y jouer un peu.
 
Bref ces gens la marchent sur la tete..
 
LeGreg


Message édité par LeGreg le 09-06-2003 à 10:10:42
Reply

Marsh Posté le 09-06-2003 à 10:10:46    

S-GAIA a écrit :


Cela n'est pas étonnant, quand on sait que toute bonne installation passe par la recompilation du noyau de Linux !  


 
N'importe quoi !


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 09-06-2003 à 11:18:00    

kadreg a écrit :


 
N'importe quoi !


[:benou_+1]
La plupart de la planète n'a pas que ca à foutre d'installer une gentoo hein...

Reply

Marsh Posté le 09-06-2003 à 11:23:00    

Les gens qui n'écrivent pas de réponses constructives m'énervent.
Donc, je te remercie legreg pour ta réponse argumentée (ce qui n'était pas le cas la première fois)
Par contre, kadreg, ta réponse est nulle, moi aussi je peux écrire 2 mots, c'est de mon niveau...
 
Pour reprendre ta réponse constructive legreg, je me permets aussi de me donner mon avis :
 
- tu penses que la compilation est inutile pour optimiser une  
machine qui tourne sous Linux ? Je m'incline parce qu'en fait je n'en sais rien. Une chose est sure : la compilation est une opération courante sous Linux pour tout utilisateur, développeur ou non, car les applications peuvent être fournies avec leur code source et il faut savoir les compiler avant de pouvoir s'en servir.
 
- tu dis que la compilation ne sert à rien pour l'utilisateur lambda et lui fait perdre son temps. Je suis assez d'accord avec cette remarque. La compilation consomme des ressources systèmes non négligeable et la compilation peut se compter en heures pour les très gros programmes !
Dans ces conditions, quel est l'intérêt de savoir compiler ?
Je ne vois pas la question sous le même angle que toi : il ne s'agit pas de compiler pour le plaisir mais par question de survie parce que ça peut être indispensable un jour (un peu comme quelqu'un qui n'aime pas l'eau mais qui veut apprendre à nager par sécurité). Ou comment te dire encore ? ... comme quelqu'un qui cherche à faire redémarrer sa voiture suite à une panne sans avoir l'âme d'un mécanicien (c'est bien de savoir changer un pneu  :D )
 
- tu penses que je n'apprendrai rien à savoir comment compiler et pourtant, j'ai pris des notes sur le sujet pour m'aider à comprendre ces notions et je suis très content en particulier de comprendre ce que sont les bibliothèques dynamiques. Voici mes notes à tout hasard pour te convaincre que je ne cherche pas à simplement savoir comment compiler, mais un peu plus quand même.
 


 
Comment les instructions sont-elles écrites puis éxécutées ?  
Un programme est souvent écrit dans plusieurs fichiers que l'on appelle fichiers sources.
Les fichiers sources contiennent ce qu'on appelle le code source du programme (ou plus simplement le code). Le code source est écrit dans un langage qui n'est pas compréhensible tel quel par le matériel de l'ordinateur.  
Pour éxécuter un programme à partir de son code source, il y a 2 solutions :  
- utiliser un programme appelé interpréteur, capable de lire le code source et d'effectuer les  
opérations demandées ;  
- utiliser un programme appelé compilateur, capable de traduire le langage source en code binaine, directement exécutable par le matériel de l'ordinateur.  
 
avantages des interpréteurs et domaines d'applications :
les programmes interprétés constituent ce que l'on appelle des scripts. L'atout des scripts réside dans leur écriture facile, immédiate et rapide à tester. La plupart des opérations d'administration du système utilisent donc des scripts.  
   
avantages des compilateurs et domaines d'applications :  
l'atout des compilateurs réside dans l'exécution immédiate des instructions, directement compréhensibles par le matériel de l'ordinateur. De ce fait, les instructions sont exécutées immédiatements sans être ralenties par un interpréteur. Les programmes compilés sont notamment le noyau lui-même, le shell, les commandes de base et les applications. Ils effectuent de nombreuses tâches et sont souvent appelés à partir de scripts.  
   
Comment une application est-elle compilée ?  
Il est important de comprendre comment une application est compilée si on veut compiler des codes sources par soi-même. La compilation est une opération courante sous Linux pour tout
utilisateur, développeur ou non, car les applications sont souvent fournies avec leur code source et il faut savoir les compiler avant de pouvoir s'en servir.  
   
La compilation est l'opération qui consiste à lire un fichier source et à le traduire dans le langage binaire du processeur (le langage binaire est incompréhensible pour les humains ; cependant il existe un langage de bas niveau qui permet de coder directement le binaire : c'est le langage assembleur qui est par ailleurs le moins évolué de tous les langages).  
   
Comme nous l'avons dit, un programme est écrit dans plusieurs fichiers sources. Le processus de compilation permet donc d'obtenir plusieurs fichiers binaires que l'on appelle également
fichiers objets. Ces fichiers portent l'extension .o (ou .obj sous les systèmes Microsoft).
Pour générer le fichier exécutable du programme, il faut regrouper ces fichiers objets. Cette opération est appelée l'édition des liens et s'effectue à l'aide d'un programme, l'éditeur de liens (ou linker en anglais).  
   
En fait, dès la compilation des différents fichiers sources en fichiers objets, le compilateur se sert de fichiers en-têtes système pour créer des références partielles, placées dans les fichiers objets afin d'établir les liens et l'interraction entre ces fichiers. Lorsque tous les fichiers sources ont été  
compilés en fichiers objets, la transformation en fichier exécutable unique se fait grâce à l'éditeur de lien qui va générer les références complètes ; pour faire ce travail, l'éditeur de lien se sert des références partielles contenues dans les différents fichiers objets.  
   
Quand on crée un programme, on se sert bien souvent de fichiers objets définissant des fonctions de base. Ainsi la création d'un programme est bien souvent un ensemble de fichiers objets réalisés par un programmeur auquel on ajoute un ensemble de fichiers objets qui contiennent des fonctions de bases déjà écrites. Ces fichiers objets contenant des fonctions déjà  
écrites sont ce qu'on appelle des fichiers bibliothèques ou plus simplement des bibliothèques (également appelées librairies en anglais). Les bibliothèques sont souvent nommées avec une terminaison .a (ou .lib pour les systèmes Microsoft).
 
Le fait d'intégrer dans l'exécutable toutes les bibliothèques (ou plus généralement tous les fichiers objets) présentent plusieurs inconvénients :  
- l'ensemble des exécutables pèsent un poids d'autant plus lourd qu'ils contiennent un grand nombre de fichiers objets communs ;
- la mise à jour d'un fichier objet suppose refaire l'édition des liens de tous les programmes qui l'utilisent, ce qui n'est pas réalisable en pratique  
   
C'est pour cela que les bibliothèques dynamiques ont été créées : une bibliothèque dynamique n'est pas incluse dans les fichiers des exécutables qui l'utilisent ; elle reste dans un fichier séparé. Ces bibliothèques sont regroupées dans un répertoire bien défini du système de fichiers, ce qui permet de les partager entre différents programmes. Les bibliothèques dynamiques sont souvent nommées avec une terminaison .so (pour shared object) ou .dll dans les systèmes Microsoft (pour « Dynamic Link Library »).    
 
Avec les bibliothèques dynamiques, l'édition des liens est incomplète car les références deviennent externes. Un programme spécial, l'éditeur de liens dynamiques ("ld" pour link  
dynamically" ) est chargé de ce travail.  
 
Les bibliothèques dynamiques présentent elles aussi un petit inconvénient : le chargement des programmes est un peu plus lent puisqu'il faut réaliser l'édition de liens dynamiques lors de leur lancement. Cependant, ce processus a été optimisé, et les formats de fichiers binaires utilisés contiennent toutes les informations précalculées pour faciliter la tâche de l'éditeur de liens dynamiques. Ainsi, la différence de performance est devenue à peine décelable.


 
Voilà ! Ma conclusion à tout ça, c'est que je veux bien ne pas être dans le vrai, écrire des choses discutables ou fausses mais je n'accepte pas qu'on me réponde sans développer son point de vue.


Message édité par s-gaia le 09-06-2003 à 11:24:43
Reply

Marsh Posté le 09-06-2003 à 11:29:58    

S-GAIA a écrit :

Les gens qui n'écrivent pas de réponses constructives m'énervent.


D'un autre coté tu écris des trucs que tu as lu on ne sait où alors que tu ne connais pas grand chose au sujet...et je n'ai vu aucune argumentation non plus hein... :ange:  
Si recompiler tous tes progs t'amuse, ok amuse toi, mais si c'est pour gagner 0.5% de perfs et ne voir la différence que parce-que tu t'es persuadé que c'est mieux comme ça, laisse moi rigoler! :sarcastic:

Reply

Marsh Posté le 09-06-2003 à 11:35:54    

Quant à moi je comprend même pas l'interet du topic ...
 
S-GAIA c'est bien beau de farfouiller les bouquins et internet mais je pense que ton questionnement n'est pas vraiment valide.  
J'ai l'impression que tu fait l'amalgame entre la compialtion en général et la compialtion d'application sous un OS particulier ...
 
Faudra m'expliquer la démarche.

Reply

Marsh Posté le 09-06-2003 à 11:36:43    

skeye, les gens qui ne lisent pas mes réponses m'énervent aussi.
(à part l'encadré blanc que vous n'êtes pas obligé de lire, cela va de soi...)
 
 
Où va tu chercher que je veux savoir compiler pour gagner 0,5 % de perf ?
 
Voici un copier-coller de ma réponse précédente, fais un effort lorsque tu lis !
 
"la compilation est inutile pour optimiser une  
machine qui tourne sous Linux ? Je m'incline parce qu'en fait je n'en sais rien."

Reply

Marsh Posté le 09-06-2003 à 11:39:03    

Joel F a écrit :

Quant à moi je comprend même pas l'interet du topic ...
 
S-GAIA c'est bien beau de farfouiller les bouquins et internet mais je pense que ton questionnement n'est pas vraiment valide.  
J'ai l'impression que tu fait l'amalgame entre la compialtion en général et la compialtion d'application sous un OS particulier ...
 
Faudra m'expliquer la démarche.


 
C'est possible, merci de ta réponse. Je me perds tout seul, certainement. Mais des réponses comme la tienne m'aide à me repositionner et me remettre en question. Merci.

Reply

Marsh Posté le 09-06-2003 à 11:44:09    

S-GAIA a écrit :

skeye, les gens qui ne lisent pas mes réponses m'énervent aussi.
(à part l'encadré blanc que vous n'êtes pas obligé de lire, cela va de soi...)
 
 
Où va tu chercher que je veux savoir compiler pour gagner 0,5 % de perf ?
 
Voici un copier-coller de ma réponse précédente, fais un effort lorsque tu lis !
 
"la compilation est inutile pour optimiser une  
machine qui tourne sous Linux ? Je m'incline parce qu'en fait je n'en sais rien."


J'avoue, je n'ai fait que survoler...
Mais d'un autre coté ta question de départ ne rime à rien, tout ce que tu souhaites faire c'est être capable de compiler une appli sous linux, hors cette opération est inutile dans 95% des cas, et les rares fois ou tu en as besoin tu as un joli fichier INSTALL ou README fourni avec les sources qui t'explique très bien comment faire.
Tu n'as absolument aucun besoin de tout ce que tu es en train d'étudier, à moins d'ambitionner de passer à la programmation par la suite...
Ton acharnement à continuer sur ce topic alors que tout le monde (y compris des personnes qui bien que peu bavardes en connaissent plus sur linux que tu en connaitras probablement jamais) à essayer de t'expliquer que ca ne sert à rien commence à ressembler assez fortement à un troll...et ce n'est pas le bon jour.

Reply

Marsh Posté le 09-06-2003 à 11:53:57    

Merci de ta réponse skeye. Je ne demande pas mieux que d'avoir des infos commes les tiennes.
 
Je rappelle que dans la doc que j'ai lue, il est écrit que savoir compiler est fortement conseillé sous Linux. Met toi à ma place, je ne suis encore que débutant et je n'en sais rien en fait. Donc, ta réponse m'intéresse et je t'en remercie.
 
Quant à troller sur un topic, ce n'est pas mon intention, jamais de la vie ! Je tenais juste à dire que je n'aime pas les gens qui me disent "c'est pas bien" sans m'expliquer pourquoi. Et d'ailleurs, cela vous a fait réagir et vous m'expliquez maintenant pourquoi je me plante et j'apprécie vos réponses.

Reply

Marsh Posté le 09-06-2003 à 13:59:43    

Un peu de calme ici svp...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-06-2003 à 14:39:34    

salut l'ami S-GAIA je comprends ton desarois tu poses une kestion et la premiere chose kon trouve a te repondre c'est : ca sers a rien et blablablablal .... pour ca que je poste de moins en moins ici les gens ne sont pas fort agreable ;)  
 
bref la compilation c'est pratik qd tu recupere les sources et pour installer ton programme ( meme si certain ne jure que apt-get ... je pense que savoir compiler c'est comprendre un peu mieux sa machine, et puis j'aime les gens comme toi qui on soif de savoir si tu en envie de savoir meme si ca ne te sers pas forcement apprendre est tjs bon alors qd je vois c reponse je me dis que l'avarice du savoir existe bel et bien lol )  
bon alors comme on te la dis plus haut qd tu download un programme tu le decompresse ( tgz ou bz2 peut importe le format pour ca voir ton ami le man :) ) et ensuite tu lis le fichier INSTALL ou un README fin des truc tape a l'oeil lol
en general on t'indiquera : ./configure make make install
et apres c fais tout seul.
mais la c'est juste une installation du prog la compilation se fais en background grace a instruction contenu dans le makefile ( edit le tu verras un peu la structure) et tu verra que le make file fais appel au compilateur : gcc.
si tu souhaite compiler "manuellement" creer un petit fichier.c avec le contenu suivant : ( appel le test.c par exemple)

Code :
  1. #include <stdio.h> // headers
  2. int main(int argc, char *argv[])
  3. {
  4.   printf("bijour" );
  5.   return 1;
  6. }


 
et la tu prends tu tape sous le shell :  

Code :
  1. gcc -o test test.c


 
et apres lance ton programme via :

Code :
  1. ./test


 
bon j'espere t'avoir un peu eclairer sur ce sujet si toutefois je n'ai pas ete assez explicite hesite pas a me PM je me ferai un plaisir de te transmettre le peu de savoir que j'ai acquis ;)
 
Amicalement qxn

Reply

Marsh Posté le 09-06-2003 à 14:54:25    

qxn a écrit :

salut l'ami S-GAIA je comprends ton desarois tu poses une kestion et la premiere chose kon trouve a te repondre c'est : ca sers a rien et blablablablal .... pour ca que je poste de moins en moins ici les gens ne sont pas fort agreable ;)  


J'ai lu ce topic en entier, et voici mon avis sur la question :
 
- OK, la compilation est utile sous linux pour installer des programmes. Personnellement, je n'aime pas les packages préconfigurés. Je préfère largement compiler moi même les programmes, afin d'activer tel ou tel support, etc... C'est pour ça que je recherche toujours les tgz d'une application.  
J'ai fait une entorse à cette règle une seule fois : pour les drivers nVidia. Je les ai téléchargés en .rpm, et ça n'a jamais fonctionné ! Je les récupère en tgz, je les compile et O magie, ça fonctionne. Sur ce point, je rejoins S-GAIA.
 
- Maintenant, les autres ont aussi raison : compilation != programmation. Si tu veux compiler sans savoir ce que tu fais, mais uniquement parce qu'une grosse tête de décideur t'a dit que c'était bien, alors tu fonces dans le mur. Tot ou tard, il te faudra tripatouiller le makefile pour activer telle option, rajouter tel support, etc... Et ça, si tu n'as pas de notion de programmation, tu vas en chier comme jamais.
 
S-GAIA >> A toi de voir ce que tu souhaites rééllement faire et à ne pas te laisser influencer.
 
QNX >> Merci de garder tes commentaires sur les forumeurs pour toi. Si tu as une objection à formuler, j'ai ouvert un topic rien que pour ça. Inutile de casser du sucre sur le dos de personnes qui, et je ne le répeterais jamais assez, répondent parfaitement normalement aux questions normales. Va donc voir ma dernière réponse dans le topic sus-cité, et si tu n'es pas d'accord, tu auras le droit de gueuler.
Surtout que ta réponse est largement incomplète (que fais tu des warnings ? du support des optimisations ? du makefile ? etc...)


Message édité par Harkonnen le 09-06-2003 à 14:55:40

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-06-2003 à 15:00:11    

Harkonnen a écrit :


QNX >> Merci de garder tes commentaires sur les forumeurs pour toi. Si tu as une objection à formuler, j'ai ouvert un topic rien que pour ça. Inutile de casser du sucre sur le dos de personnes qui, et je ne le répeterais jamais assez, répondent parfaitement normalement aux questions normales. Va donc voir ma dernière réponse dans le topic sus-cité, et si tu n'es pas d'accord, tu auras le droit de gueuler.
Surtout que ta réponse est largement incomplète (que fais tu des warnings ? du support des optimisations ? du makefile ? etc...)


 
tu conviendra avec moi que qd on pose une kestion on n'attend une reponses a la question et non pas un avis sur l'utilitee de la question elle meme ;)  
bref en ce ki concerne ce topic de doleance lis la reponse de Half-True vachement le droit de s'exprimer ... donc non je participe pas a ce genre de topic pseudo democratic qui est en fait juste un defouloir et dont on se mok de l'avis des gens ( mais bon on bva pas continuer dans ce topic paks en fait c un peu HS la ;) mais si tu veux t'entretenir avec moi MP moi)

Reply

Marsh Posté le 09-06-2003 à 15:03:49    

qxn a écrit :


 
tu conviendra avec moi que qd on pose une kestion on n'attend une reponses a la question et non pas un avis sur l'utilitee de la question elle meme ;)  
bref en ce ki concerne ce topic de doleance lis la reponse de Half-True vachement le droit de s'exprimer ... donc non je participe pas a ce genre de topic pseudo democratic qui est en fait juste un defouloir et dont on se mok de l'avis des gens ( mais bon on bva pas continuer dans ce topic paks en fait c un peu HS la ;) mais si tu veux t'entretenir avec moi MP moi)


Relis le début du topic.
J'ai commencé par lui conseiller de lire un bon bouquin, le sujet étant plutot vague.
Il a ensuite expliqué pourquoi il voulait faire ca, et là j'ai essayé de lui faire comprendre que dans ce cas il avait peut-être des choses plus intéressantes à étudier...

Reply

Marsh Posté le 09-06-2003 à 15:07:41    


Citation :

J'ai commencé par lui conseiller de lire un bon bouquin , le sujet étant plutot vague.


heu bon le gars pose une kestion tu lui dis d'aller acheter un boukin tu trouves ca normal ? perso moi pas du tout  
 

Citation :

Il a ensuite expliqué pourquoi il voulait faire ca, et là j'ai essayé de lui faire comprendre que dans ce cas il avait peut-être des choses plus intéressantes à étudier...


y ta pas demander ton avis sur l'utilitee de la chose il veux etudier ca alors soit tu lui reponds soit non ;) fin c mon avis
mais bon je suis pas la pour pourrir se topic alors restons calme civilises et n'oublions pas qu'il veux une reponse et k la base ce post n'est pas un reglement de compte et ce n'etait pas le but de ma reponse. j'ai repondu pour l'aider pas pour envenimer les chose ;)
 
Sans aucune animosité.
Amicalement McFly

Reply

Marsh Posté le 09-06-2003 à 15:20:02    

qxn a écrit :


Citation :

J'ai commencé par lui conseiller de lire un bon bouquin , le sujet étant plutot vague.


heu bon le gars pose une kestion tu lui dis d'aller acheter un boukin tu trouves ca normal ? perso moi pas du tout  
 

Citation :

Il a ensuite expliqué pourquoi il voulait faire ca, et là j'ai essayé de lui faire comprendre que dans ce cas il avait peut-être des choses plus intéressantes à étudier...


y ta pas demander ton avis sur l'utilitee de la chose il veux etudier ca alors soit tu lui reponds soit non ;) fin c mon avis
mais bon je suis pas la pour pourrir se topic alors restons calme civilises et n'oublions pas qu'il veux une reponse et k la base ce post n'est pas un reglement de compte et ce n'etait pas le but de ma reponse. j'ai repondu pour l'aider pas pour envenimer les chose ;)
 
Sans aucune animosité.
Amicalement McFly


Je lui conseille de commencer par lire un bouquin à cause de sa question de départ, qui montre clairement qu'il n'a absolument aucune connaissance. Ne me voyant pas lui faire une initiation complète de C, je lui ai conseillé ce que je voyais de plus adapté.
 
Pour la suite, si je ne lui ai pas donné de réponse directe c'est  une fois encore que ce n'était pas à mon avis la meilleure manière de l'aider...Il cherche à faire quelque chose, mais sa question est mal adaptée à priori, j'essaye donc de l'orienter vers des choses qui lui seront plus utiles pour l'objectif qu'il souhaite atteindre.
 
Maintenant je pense avoir assez justifié mes réponses comme ca...

Reply

Marsh Posté le 10-06-2003 à 22:24:41    

:) Merci qnx pour ta réponse. C'est vraiment sympa  :love:  
J'ai fais des essais sur tes explications très concrètes et c'est un bon début !
 
Merci Harkonnen également pour ta réponse.
 
Je vous remercie vraiment tous les 2, je vois mieux comment me diriger pour m'en sortir, à présent.
 
Je n'ai peut être pas été suffisament clair sur mon niveau. J'ai précisé que je n'étais pas programmeur/développeur mais j'ai quand même quelques notions de programmation.
 
Par exemple, dans le poste à qnx, qui me propose d'écrire le fichier .c suivant :


#include <stdio.h> // headers  
int main(int argc, char *argv[])  
{  
 printf("bijour" );  
 return 1;  
}  


 
Je comprends que la fonction main retourne en paramètre de sortie un entier int, et que 2 paramètres d'entrées sont également passé à main, dont un pointeur.
 
j'ai fait un peu de programmation en C, trop peu pour me prétendre développeur et suffisamment pour avoir envie d'en apprendre plus !
 
Je sais aussi que la ligne #include stdio.h est indispensable pour appeler printf, tout comme conio.h serait indispensable pour appeler scanf.
 
Maintenant, je dois avouer ne pas comprendre ce qui se passe quand on compile un programme (sous windows, je clique bêtement sur le bouton qui permet de compiler et puis voilà... il peut y avoir des warnings et des errors pendant la tentative de compilation si j'ai fait des erreurs et après corrections, le programme tourne).
 
Lorsque j'ai cherché à en savoir plus, je me suis demandé comment on pouvait bien générer un exécutable à partir de plusieurs fichiers sources différents. (parce que mes très modestes connaissances en programmation ne m'ont jamais ammennées à faire du code dans plusieurs fichiers à la fois).
 
Après pas mal de recherches et de lecture, j'ai appris des choses très intéressantes sur les interpréteurs et les compilateurs, les bibliothèquues statiques et dynamiques mais je ne voyais pas très concrètement la procédure permettant d'obtenir un exécutable à partir de plusieurs fichiers sources.
Et je vous ai sollicité pour me montrer un exemple.
 
Evidemment, ma démarche est motivée par l'envie d'apprendre des choses nouvelles et qnx l'a compris (merci !  :) ).
 
Mais ceci étant, j'apprécie aussi ceux qui me disent que je risque d'aller droit dans le mur pour n raisons.
En ce sens, je te remercie de ta réponse complète, Harkonnen, qui permet de bien faire le point sur la question ! J'ai bien compris que la compilation pose plus de questions que je ne le pensais !


---------------
[:iboll]
Reply

Marsh Posté le 10-06-2003 à 22:33:11    

Mon post précédent est là pour remercier les personnes qui m'ont aidées dans les dernières réponses et pour donner des précisions sur ma démarche et ce qui me motive à poser des questions sur la compilation, ce qui interessera surtout les forumeurs qui ont déjà participé à ce topic...
 
Dans ce post, une petite question :
Harkonnen a écrit :
"Je préfère largement compiler moi même les programmes, afin d'activer tel ou tel support, etc... "
 
houla, il y a un "etc", ça me fait peur !  :D  
Savez-vous où je peux trouver une doc sur Internet qui m'explique tout ça, ou à défaut, pouvez-vous développer la réponse d'Harkonnen pour que j'aie des mots clés qui m'aident dans les moteurs de recherches (et que je sache quoi rechercher !)
 
Merci de votre aide


Message édité par s-gaia le 10-06-2003 à 22:36:31

---------------
[:iboll]
Reply

Marsh Posté le 10-06-2003 à 22:45:56    

Ca fait longtemps que j'ai désinstallé linux, mais ce que je peux te dire, c'est que le etc. qui te fait peur, c'est toutes les options, optimisations... qu'un programme peut te proposer à la compilation, et que tu actives grâce à la ligne de commande pour la compilation (Si je me souviens bien, c'est du type -Option1 -Options2...)
 
Il n'y a pas de règle générale (ou s'il y en a, d'autres se chargeront de te les dire), mais il te faut lire la doc du soft en question pour savoir quels sont les commutateurs disponibles que tu peux ajouter ou non selon ce que tu veux incorporer au programme...
 
J'espère avoir été clair :)


---------------
Another .Net Blog
Reply

Marsh Posté le 11-06-2003 à 03:18:54    

S-GAIA a écrit :

j'ai fait un peu de programmation en C, trop peu pour me prétendre développeur et suffisamment pour avoir envie d'en apprendre plus !
 
Je sais aussi que la ligne #include stdio.h est indispensable pour appeler printf, tout comme conio.h serait indispensable pour appeler scanf.
 


 
si ce bout de code n'est pas clair comme de l'eau de roche, je vois pas qu'est-ce que t'as pu apprendre en C alors :/, d'autant que si tu veux découvrir tout ce qui est pipes, ipc, etc... tu as intérêt à avoir des bases un peu plus solides en C avant de passer à l'étape supérieure.
Le plus simple pour toi est d'installer une mandrake pour d'emmerder le moins possible avec ce qui est installation de l'os. Tu pourras t'attarder plus tard là dessus, une fois que tu auras une culture c et linux un peu plus vaste.
pour des cours C, je te conseille : http://www.irit.fr/ACTIVITES/EQ_TC [...] lcome.html
Ce sont les td et tp de la licence info de toulouse. j'ai appris avec ca et c'est très progressif, bien expliqué, et on apprend a coder proprement.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed