<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://uname.pingveno.net/blog/index.php/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title># uname -a - Mot-clé - compilation</title>
    <link>https://uname.pingveno.net/blog/index.php/</link>
    <atom:link href="https://uname.pingveno.net/blog/index.php/feed/tag/compilation/rss2" rel="self" type="application/rss+xml" />
    <description>Le blog de uname.pingveno.net</description>
    <language>fr</language>
    <pubDate>Wed, 01 Apr 2026 16:19:15 +0200</pubDate>
    <copyright>Mathieu Pellegrin</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Personne ne comprend l'informatique - Partie 4 : Programmes et compilation</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/08/20/Personne-ne-comprend-l-informatique-Partie-4-%3A-Programmes-et-compilation</link>
        <guid isPermaLink="false">urn:md5:081155931b8282d7e2e5909c342701ca</guid>
        <pubDate>Fri, 23 Aug 2013 18:40:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>compilation</category>
                  <category>informatique</category>
                  <category>serie-cours-informatique</category>
                <description>&lt;p&gt;&lt;a href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-cours-informatique&quot;&gt;Voir l&amp;#8217;ensemble des articles sur ce sujet&amp;#160;: Personne ne comprend l&amp;#8217;informatique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://uname.pingveno.net/blog/index.php/post/2013/08/21/Personne-ne-comprend-l-informatique-Partie-0-%3A-Lexique&quot;&gt;Voir le lexique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans le fond, comment ça s&amp;#8217;écrit un programme&amp;#160;?&lt;/p&gt;          &lt;h3&gt;Programmes et algorithmes&lt;/h3&gt;
&lt;p&gt;Nous l&amp;#8217;avons vu, un programme est une suite d&amp;#8217;instructions écrites dans le but de réaliser un traitement.&lt;/p&gt;
&lt;p&gt;Un programme a des points d&amp;#8217;entrée et de sortie de l&amp;#8217;information, et les instructions sont rédigées dans un certain ordre avec certaines conditions pour pour voir effectuer le traitement. Ces instructions peuvent être très simples ou alors très complexes.&lt;/p&gt;
&lt;p&gt;Pour écrire un programme, on utilise un moyen de description que l&amp;#8217;on appelle l&amp;#8217;algorithme. Un algorithme c&amp;#8217;est une suite d&amp;#8217;instructions reliées entre elles avec des conditions, décrivant le comportement du programme dans toutes les situations, et l&amp;#8217;ensemble des sorties possibles pour toutes les entrées possibles. Ça implique forcément que &lt;strong&gt;le nombre d&amp;#8217;entrées différentes que peut traiter un programme est un nombre fini&lt;/strong&gt;. Il faut que tous les cas d&amp;#8217;entrée soient décris dans le programme comme soit des cas d&amp;#8217;échec (sortie &amp;#8220;poubelle&amp;#8221;), soit des cas qui renvoient de l&amp;#8217;information transformée sur les sorties.&lt;/p&gt;
&lt;p&gt;Écrire un algorithme est similaire à la rédaction d&amp;#8217;une solution à un problème mathématique. Une fois qu&amp;#8217;on a la solution pour transformer les données, il faut la décrire, en reprenant les données de départ, et en les transformant pour obtenir les données d&amp;#8217;arrivée.&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;algorigramme-01.png&quot; href=&quot;https://uname.pingveno.net/blog/public/cours-informatique/algorigramme-01.png&quot;&gt;&lt;img title=&quot;algorigramme-01.png, août 2013&quot; style=&quot;margin: 0 auto; display: block; border: solid thin black;&quot; alt=&quot;algorigramme-01.png&quot; src=&quot;https://uname.pingveno.net/blog/public/cours-informatique/.algorigramme-01_m.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;center&gt;Un algorithme simple avec deux entrées numériques et une sortie.&lt;/center&gt;
&lt;p&gt;L&amp;#8217;image ci-dessus est un algorigramme, c&amp;#8217;est un schéma décrivant un algorithme simple, comme il pourrait s&amp;#8217;exécuter sur un ordinateur. Ce programme ne fait pas grand chose d&amp;#8217;utile, et il est très simple, mais c&amp;#8217;est un exemple.&lt;/p&gt;
&lt;h3&gt;Langages et compilation&lt;/h3&gt;
&lt;p&gt;Comment transformer un algorithme en instructions compréhensibles par un ordinateur&amp;#160;? Il faut savoir que le processeur d&amp;#8217;un ordinateur ne sait exécuter que des opérations simples (lire de la mémoire, réaliser des calculs avec la mémoire, etc). Ces instructions sont des codes binaires qui sont envoyés au processeur. Bon, sauf que les informaticiens n&amp;#8217;écrivent pas directement de codes binaires pour le processeur.&lt;/p&gt;
&lt;p&gt;Pour écrire un programme, les informaticiens utilisent ce que l&amp;#8217;on appelle un langage. Un langage informatique est un ensemble de mots (écrits avec des vraies lettres) que l&amp;#8217;on assemble pour décrire l&amp;#8217;algorithme. Voici un petit exemple de notre algorithme dans un langage informatique qui pourrait exister&amp;#160;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DÉBUT&lt;br /&gt;Si entree1 = 0 alors sortie1 = 0, FIN&lt;br /&gt;Si entree1 &amp;lt; 0 alors val1= entree1 - 2&lt;br /&gt;Si entree1 &amp;gt; 0 alors val1 = entree1 + 2&lt;br /&gt;val2 = entree2 + 3&lt;br /&gt;val3 = val1 + val2&lt;br /&gt;sortie1 = val3&lt;br /&gt;FIN&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Bien évidemment, un processeur ne comprend pas le français, donc il ne comprend pas ce que veut dire &amp;#8220;Si entree1 = 0&amp;#8221;. Pour transformer ce texte en programme, il faut réaliser une traduction que l&amp;#8217;on appelle la compilation.&lt;/p&gt;
&lt;p&gt;La compilation est le processus par lequel un texte écrit dans un langage informatique devient un programme exécutable par un ordinateur. Chaque &amp;#8220;phrase&amp;#8221; est traduite en code compréhensible par le processeur, et le programme peut se lancer. Ce processus peut paraître simple, mais il y là aussi des aspects fondamentaux et formels pour que ce processus puisse avoir lieu (syntaxe, optimisations, etc).&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est grâce à de tels outils que l&amp;#8217;on arrive à écrire sans trop d&amp;#8217;efforts des programmes efficaces dans la majorité des cas.&lt;/p&gt;
&lt;h3&gt;En conclusion&lt;/h3&gt;
&lt;p&gt;Nous avons vu que les programmes se modélisent sous forme d&amp;#8217;algorithme et s&amp;#8217;écrivent ensuite dans un langage compréhensible pour être ensuite traduits pour être exécutés par l&amp;#8217;ordinateur.&lt;/p&gt;
&lt;p&gt;La partie suivante &amp;#8230; Je n&amp;#8217;ai pas encore décidé quoi mettre dedans, et pourtant il y a encore plein de choses à dire&amp;#160;!&lt;/p&gt;
&lt;p&gt;Restez attentifs (&lt;a hreflang=&quot;fr&quot; href=&quot;https://uname.pingveno.net/blog/index.php/feed/rss2&quot;&gt;abonnez-vous au blog&lt;/a&gt;), ou &lt;a hreflang=&quot;fr&quot; href=&quot;https://uname.pingveno.net/blog/index.php/contact&quot;&gt;proposez moi de nouveaux sujets&lt;/a&gt;, les articles suivants n&amp;#8217;en seront que plus intéressants. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-cours-informatique&quot;&gt;Voir l&amp;#8217;ensemble des articles sur ce sujet&amp;#160;: Personne ne comprend l&amp;#8217;informatique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://uname.pingveno.net/blog/index.php/post/2013/08/21/Personne-ne-comprend-l-informatique-Partie-0-%3A-Lexique&quot;&gt;Voir le lexique&lt;/a&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Compiler Kurso de Esperanto version 4 sous Debian et Ubuntu depuis les sources</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/06/23/Compiler-Kurso-de-Esperanto-version-4-sous-Debian-et-Ubuntu-depuis-les-sources</link>
        <guid isPermaLink="false">urn:md5:ceea1e41573e4330b516cf45041407aa</guid>
        <pubDate>Sun, 23 Jun 2013 14:37:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>compilation</category>
                  <category>kurso</category>
                  <category>Kurso de Esperanto</category>
                  <category>kurso4</category>
                  <category>Qt</category>
                  <category>Qt4</category>
                <description>&lt;p style=&quot;font-size:1.4em; border: solid thin #00c0ff; background-color: #e0e0ff; padding: 0.5em; margin-bottom: 2em; text-align: center;&quot;&gt;Version pré-compilée pour Ubuntu 16.04 : &lt;a href=&quot;https://launchpad.net/~mathieu-pellegrin/+archive/ubuntu/kurso-de-esperanto&quot;&gt;Ubuntu PPA&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Comme il n'y a pas de documentation sur la manière de compiler le programme &lt;a href=&quot;http://www.kurso.com.br/elshuto.php?fr&quot; hreflang=&quot;fr&quot;&gt;Kurso de Esperanto&lt;/a&gt;, voici comment faire.&lt;/p&gt;

&lt;p&gt;Compilation réalisée sous Ubuntu, applicable à une Debian GNU/Linux, pour Windows il faudra sans doute faire différemment.&lt;/p&gt;

&lt;p&gt;À lire aussi : [&lt;a href=&quot;http://uname.pingveno.net/blog/index.php/post/2013/06/23/How-to-compile-Kurso-de-Esperanto-from-source-with-Debian-and-Ubuntu&quot;&gt;En anglais&lt;/a&gt;] - [&lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/06/23/Kompili-Kurso-de-Esperanto-4-kun-Debian-kaj-Ubuntu-surbaze-de-fontoj&quot;&gt;En Esperanto&lt;/a&gt;]&lt;/p&gt;

&lt;h3&gt;Téléchargement&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Téléchargez la source à partir de cette page : &lt;a href=&quot;http://www.kurso.com.br/elshuto.php?fr&quot; hreflang=&quot;fr&quot;&gt;http://www.kurso.com.br/elshuto.php?fr&lt;/a&gt;&lt;br /&gt;
	(En ligne de commande : &lt;code&gt;wget &lt;a href=&quot;http://kurso.com.br/kurso4_source.tar.gz&quot;&gt;http://kurso.com.br/kurso4_source.tar.gz&lt;/a&gt;&lt;/code&gt; )&lt;/li&gt;
	&lt;li&gt;Extrayez l'archive :&amp;nbsp;&lt;code&gt;tar -xzf kurso4_source.tar.gz&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Dépendances&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Installez le nécessaire pour compiler un programme Qt :&amp;nbsp;&lt;code&gt;sudo apt-get install build-essential qt4-qmake libqt4-dev g++ make libphonon-dev libqt4-xml-dev libqt4-opengl-dev&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cas particulier : Ubuntu 12.04&lt;/h3&gt;

&lt;p&gt;Pour compiler sous Ubuntu 12.04, il faut utiliser le module Qt &lt;code&gt;mobility&lt;/code&gt; pour pouvoir utiliser le module Qt &lt;code&gt;multimedia&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Ajoutez &lt;code&gt;qtmobility-dev&lt;/code&gt; aux dépendances : &lt;code&gt;sudo apt-get install qtmobility-dev&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;Créez le lien symbolique suivant (en root) : &lt;code&gt;sudo ln -s /usr/include/QtMultimediaKit/ /usr/include/QtMultimedia&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;Modifiez depuis le dossier des sources le fichier kurso4.pro :&lt;br /&gt;
	Remplacez la ligne :
	&lt;blockquote&gt;
	&lt;p&gt;&lt;code&gt;QT += core gui phonon&amp;nbsp; multimedia&lt;/code&gt;&lt;/p&gt;
	&lt;/blockquote&gt;
	par les lignes :

	&lt;blockquote&gt;
	&lt;p&gt;&lt;code&gt;QT += core gui phonon&lt;br /&gt;
	CONFIG += mobility&lt;br /&gt;
	MOBILITY += multimedia&lt;/code&gt;&lt;/p&gt;
	&lt;/blockquote&gt;
	&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Compilation&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Placez-vous dans le dossier que vous avez extrait : &lt;code&gt;cd kurso4&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;Lancez la commande &lt;code&gt;qt4-qmake&lt;/code&gt; pour créer le Makefile.&lt;/li&gt;
	&lt;li&gt;Lancez ensuite la commande &lt;code&gt;make&lt;/code&gt; pour compiler le programme.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Exécution&lt;/h3&gt;

&lt;p&gt;Il ne vous reste plus qu'à lancer le programme exécutable &lt;strong&gt;kurso4&lt;/strong&gt; qui vient d'être créé, ou à l'installer en tapant &lt;code&gt;make install&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;Attention, il vous faudra les exécutables des libraires Qt pour pouvoir lancer le programme (&lt;code&gt;sudo apt-get install libqt4 phonon qtmobility libqtcore4 libqt4-dbus libqt4-xml libqt4-opengl&lt;/code&gt;)&lt;/p&gt;

&lt;h3&gt;Le programme plante au démarrage&lt;/h3&gt;

&lt;p&gt;L'archive qui contient la source pour la compilation &lt;strong&gt;ne contient pas les fichiers de son et de vidéo&lt;/strong&gt; (dossiers &lt;code&gt;sonoj&lt;/code&gt; et &lt;code&gt;video&lt;/code&gt;). Le programme plante alors au démarrage en essayant de vous dire bonjour. Il faut de récupérer les dossiers manquants depuis une autre archive (l'une des versions exécutables par exemple) pour copier les dossiers &lt;code&gt;sonoj&lt;/code&gt; et &lt;code&gt;video&lt;/code&gt; dans le dossier source de l'application, avant de lancer le programme &lt;strong&gt;kurso4&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Voilà, c'est tout. Si vous avez des difficultés à compiler le programme, n’hésitez pas à le faire savoir en commentaires &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot;&gt; .&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Touche pas à mon shell !</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2011/03/23/Touche-pas-%C3%A0-mon-shell-%21</link>
        <guid isPermaLink="false">urn:md5:59fad771b6ba5fc0019b8eceeadf4c94</guid>
        <pubDate>Wed, 23 Mar 2011 13:17:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>bash</category>
                  <category>bashrc</category>
                  <category>compilation</category>
                  <category>hack</category>
                <description>          &lt;p&gt;Il y a quelque chose qui m&amp;#8217;a énervé dès le début de l&amp;#8217;année sur les machines qu&amp;#8217;on utilise en TP, et ça a continué en pire jusqu&amp;#8217;à aujourd&amp;#8217;hui. Ce court billet va donc expliquer pourquoi j&amp;#8217;ai été amené à compiler mon propre shell, et comment le faire.&lt;/p&gt;
&lt;p&gt;Petit rappel des faits&amp;#160;: au début de l&amp;#8217;année une ligne dans notre .bashrc personnel lançait le navigateur à chaque nouveau terminal, oui vous avez bien entendu, à chaque nouveau terminal le navigateur se lançait. Ceci pour rappeler les règles élémentaires de respect des salles, etc.&lt;/p&gt;
&lt;p&gt;Ceci dit, lancer un programme graphique en même temps qu&amp;#8217;un terminal, c&amp;#8217;est stupide, surtout quand comme moi on lance plusieurs terminaux et qu&amp;#8217;on se retrouve avec plusieurs firefox d&amp;#8217;ouverts par la même occasion, ça devient profondément pénible. Une petite modification du bashrc plus tard, cette fonctionnalité ubuesque avait disparue.&lt;/p&gt;
&lt;p&gt;Mais, il y a quelques jours l&amp;#8217;administrateur système a placé la ligne en question dans le bashrc global (&lt;code&gt;/etc/bash.bashrc&lt;/code&gt;), ce qui signifie qu&amp;#8217;il n&amp;#8217;était plus possible de le désactiver, à moins de recompiler le bash. C&amp;#8217;est donc ce que j&amp;#8217;ai fait.&lt;/p&gt;
&lt;p&gt;Pour recompiler le bash, il vous faut&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;La libc standard&lt;/li&gt;
&lt;li&gt;yacc ou &lt;a hreflang=&quot;fr&quot; href=&quot;http://packages.debian.org/bison&quot;&gt;bison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Le code source de bash&amp;#160;: &lt;a hreflang=&quot;en&quot; href=&quot;http://ftp.gnu.org/gnu/bash/&quot;&gt;http://ftp.gnu.org/gnu/bash/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ensuite c&amp;#8217;est comme d&amp;#8217;habitude&amp;#160;: &lt;code&gt;./configure &amp;amp;&amp;amp; make&lt;/code&gt; et puis voilà.&lt;/p&gt;
&lt;p&gt;Les plus attentifs auront remarqué que je n&amp;#8217;indique pas de modification de code source à réaliser pour désactiver l&amp;#8217;appel au bashrc global, ce qui était le but de la manoeuvre. Ceci tout simplement parce que cet appel est désactivé par défaut dans le code fournit par GNU, le paquet Debian étant donc une version légèrement différente de l&amp;#8217;originale au niveau du code source, en fait ils ont juste décommenté la ligne contenant &lt;code&gt;#define SYS_BASHRC &quot;/etc/bash.bashrc&quot;&lt;/code&gt; du fichier &lt;code&gt;config-top.h&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Enfin, une petite formalité, il faut expliquer à gnome-terimnal de lancer notre shell plutôt que le shell par défaut, cela se fait simplement en appelant gnome-terminal avec l&amp;#8217;argument -e&amp;#160;: &lt;code&gt;gnome-terminal -e chemin_vers_le_bash&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy&amp;#160;! &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Une compilation saine et heureuse sous GNU/Linux</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2010/10/19/Une-compilation-saine-et-heureuse-sous-GNU/Linux</link>
        <guid isPermaLink="false">urn:md5:333f7ebe50faf2e240d96ddc0f6bab21</guid>
        <pubDate>Tue, 19 Oct 2010 09:14:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>compilation</category>
                  <category>informatique</category>
                <description>&lt;p&gt;Ce billet était initialement une tentative de réponse à ce billet : &lt;a hreflang=&quot;fr&quot; href=&quot;http://theriault.servhome.org/2010/10/pourquoi-jaime-mais-nutilise-pas-linux/&quot;&gt;http://theriault.servhome.org/2010/10/pourquoi-jaime-mais-nutilise-pas-linux/&lt;/a&gt; où l'auteur décrivait entre autre sa détresse pour compiler un programme sous linux (si, si, cherchez bien, il y a une phrase où il le dit).&lt;/p&gt;
&lt;p&gt;Ce billet va détailler les étapes que devrait faire tout programmeur ou
utilisateur de logiciel soucieux de compiler un programme, soit parce
qu'il n'existe pas en version exécutable, soit parce qu'il veut la
version des sources. Voici donc quelques conseils et règles de savoir
vivre.&lt;/p&gt;          &lt;h3&gt;1. Lisez le README&lt;/h3&gt;
&lt;p&gt;Lorsque vous téléchargez une source, ne vous contentez pas de décompresser l'archive, cherchez si il existe sur le site de l'éditeur des consignes pour compiler, lisez le fichier README qui est peut être inclut dans le code, lisez le fichier COMPILING, le fichier HOWTO, etc. En général ces fichiers sont n anglais, mais il est important de comprendre, au moins partiellement, ce qui est dit, pour comprendre pourquoi on reste bloqué.&lt;/p&gt;
&lt;p&gt;Attention, certaines sources contiennent des instructions pour Linux, d'autres pur BSD, d'autres pour Windows, etc. Choisissez le fichier qui correspond à votre système d'exploitation, et même si il arrive que des instructions pour BSD fonctionnent sous GNU/Linux, ce n'est pas automatique.&lt;/p&gt;
&lt;h3&gt;2. Compiler, oui, mais avec make&lt;/h3&gt;
&lt;p&gt;En général les programmes sous GNU/Linux se compilent avec un &lt;strong&gt;&lt;em&gt;Makefile&lt;/em&gt;&lt;/strong&gt;. Un &lt;strong&gt;&lt;em&gt;Makefile&lt;/em&gt;&lt;/strong&gt; est une suite d’instructions contenant en général des appels vers GCC pour compiler le programme. Ce fichier est structuré par dépendances-cibles, et il permet de compiler un programme en exécutant les instructions dans le bon ordre, et de stopper si les prérequis ne sont pas remplis.&lt;/p&gt;
&lt;h3&gt;3. Les différents types d'automake&lt;/h3&gt;
&lt;p&gt;En général quand on compile un gros programme, le développeur n'a pas rédigé entièrement les instructions du &lt;strong&gt;&lt;em&gt;Makefile&lt;/em&gt;&lt;/strong&gt;, il a utilisé des programmes pour cela, de programmes comme les scripts des &lt;strong&gt;&lt;em&gt;autotools&lt;/em&gt;&lt;/strong&gt; (&lt;strong&gt;&lt;em&gt;automake&lt;/em&gt;&lt;/strong&gt;, etc), des trucs comme &lt;strong&gt;&lt;em&gt;bam&lt;/em&gt;&lt;/strong&gt;, ou encore comme &lt;strong&gt;&lt;em&gt;cmake&lt;/em&gt;&lt;/strong&gt;. Vous devez alors identifier ce qui a été utilisé (lisez le &lt;strong&gt;README&lt;/strong&gt; et/ou les instructions sur le site) pour savoir quoi installer pour pouvoir lancer la compilation &quot;automatique&quot;.&lt;/p&gt;
&lt;h4&gt;3.1 Les &lt;em&gt;autotools&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;Les &lt;strong&gt;&lt;em&gt;autotools&lt;/em&gt;&lt;/strong&gt; sont des scripts qui créent à partir de règles les fichiers &lt;strong&gt;&lt;em&gt;configure&lt;/em&gt;&lt;/strong&gt; et &lt;strong&gt;&lt;em&gt;Makefile&lt;/em&gt;&lt;/strong&gt; nécessaire à la compilation. Le fichier &lt;strong&gt;&lt;em&gt;configure&lt;/em&gt;&lt;/strong&gt; est lui aussi important, en général on lance d'abord le configure pour vérifier que la compilation peut se dérouler et pour initialiser quelques variables qui vont changer le comportement du &lt;strong&gt;&lt;em&gt;Makefile&lt;/em&gt;&lt;/strong&gt; selon le système d'exploitation cible (emplacement des librairies, nom du compilateur, etc.). En général, on compile donc par cette suite de commandes :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./configure&lt;br /&gt;make&lt;br /&gt;make install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ne faites &lt;strong&gt;make install&lt;/strong&gt; que si vous voulez installer « en dur » le logiciel, attention, la version n'est pas vérifiée par le gestionnaire de paquet, et il faut garder les souces pour pouvoir faire un &lt;strong&gt;make uninstall&lt;/strong&gt; plus tard.&lt;/p&gt;
&lt;p&gt;Note sur les &lt;strong&gt;&lt;em&gt;autotools&lt;/em&gt;&lt;/strong&gt; : EN GENERAL, si vous compilez une version stable, c'est à dire si vous ne l'avez pas récupéré depuis un gestionnaire de version (subversion, git, mercurial...), il n'est pas nécessaire de lancer &lt;strong&gt;&lt;em&gt;autoconf&lt;/em&gt;&lt;/strong&gt; et &lt;strong&gt;&lt;em&gt;automake&lt;/em&gt;&lt;/strong&gt;, et on peut s'en tenir au simple &lt;strong&gt;configure&lt;/strong&gt; et &lt;strong&gt;make&lt;/strong&gt;, le reste est fait par le responsable de la distribution des sources. Par contre, si vous compilez une version de développement (trunk, etc), vous devrez probablement installer les &lt;strong&gt;&lt;em&gt;autotools&lt;/em&gt;&lt;/strong&gt; et lancer un &lt;strong&gt;autogen.sh&lt;/strong&gt; pour créer les fichiers &lt;strong&gt;&lt;em&gt;configure&lt;/em&gt;&lt;/strong&gt; et &lt;strong&gt;&lt;em&gt;Makefile&lt;/em&gt;&lt;/strong&gt;, pour ensuite compiler avec &lt;strong&gt;configure&lt;/strong&gt; et &lt;strong&gt;make&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;3.2 CMake&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;CMake&lt;/em&gt;&lt;/strong&gt; est un script qui a été conçu à l'origine pour répondre à la complexité d'écriture des règles des &lt;strong&gt;&lt;em&gt;autotools&lt;/em&gt;&lt;/strong&gt;. Son fonctionnement est similaire à &lt;strong&gt;&lt;em&gt;automake&lt;/em&gt;&lt;/strong&gt;, mais la compilation se fait en une seule commande, il suffit de créer un répertoire &lt;em&gt;build&lt;/em&gt; où se trouvera le programme, de se placer à l'intérieur, puis de lancer la commande &lt;strong&gt;cmake&lt;/strong&gt; avec en paramètre le chemin du dossier contenant les sources. Typiquement :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mkdir build&lt;br /&gt;cd build&lt;br /&gt;cmake ..&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;3.3 Bam&lt;/h4&gt;
&lt;p&gt;J'ai découvert &lt;strong&gt;&lt;em&gt;bam&lt;/em&gt;&lt;/strong&gt; en compilant Teeworlds, &lt;strong&gt;&lt;em&gt;bam&lt;/em&gt;&lt;/strong&gt; est un script assez similaire à &lt;strong&gt;&lt;em&gt;cmake&lt;/em&gt;&lt;/strong&gt;, ou presque, pusiqu'il marche à l'envers. Il faut se placer dans le dossier contenant les sources et appeler &lt;strong&gt;&lt;em&gt;bam&lt;/em&gt;&lt;/strong&gt; avec les bons paramètres (en général c'est indiqué dans le README).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cd sources&lt;br /&gt;../bam-0.2/bam release&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;4. Prérequis non satisfaits : « ça plante au configure »&lt;/h3&gt;
&lt;p&gt;Il est très probable si vous compilez pour la première fois que vous n'ayez pas toutes les dépendances requises, et que vous deviez télécharger quelques dizaines de méga octet de packages juste pour pouvoir compiler. Pour essayer d'aller plus vite, vous pouvez installer le paquet « &lt;em&gt;build-essentials&lt;/em&gt; » de votre distribution, il contient en général les dépendances vers le compilateur C, et quelques autres outils, mais il a pour vocation de fournir de quoi créer des packages et contient donc beaucoup de superflus pour une compilation classique.&lt;/p&gt;
&lt;p&gt;De manière générale, le configure vous dit ce qu'il manque, ou alors c'est indiqué dans les instructions de compilation (README), et si jamais e n'est pas indiqué, si le programme demande SDL/SDL.h vous saurez qu'il vous manque &lt;em&gt;libsdl-dev&lt;/em&gt;, par exemple. Les librairies c'est toujours, en général, &lt;em&gt;libmachin-dev&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;5. Problème fréquent : les versions&lt;/h3&gt;
&lt;p&gt;Il est fréquent qu'une compilation plante sans raison, juste en affichant « &lt;code&gt;this function does not exists&lt;/code&gt; », alors que l'on a bien les librairies de développement. En général, c'est parce que le programme demande une version des librairies plus récente que celle que vous possédez, et donc vous ne pouvez pas le compiler, à moins de télécharger les nouvelles versions de ces librairies. En général dans ce cas je laisse tomber, et je met à jour ma distribution. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;
&lt;h3&gt;6. Cas particulier : Compilation et patch d'un programme présent dans les dépôts&lt;/h3&gt;
&lt;p&gt;Petite parenthèse, vous pourriez avoir envie de compiler un programme déjà présent dans les dépôts, et de simplement le patcher pour avoir la version à jour (celle des dépôts étant ancienne), vous avez de la chance, en général c'est plus simple :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Installez build-essentials&lt;br /&gt;&lt;code&gt;apt-get instal build-essentials&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Récupérez la source du programme depuis les dépôts&lt;br /&gt;&lt;code&gt;apt-get source le programme&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Récupérez le nécessaire pour la compilation (c'est magique)&lt;br /&gt;&lt;code&gt;apt-get build-dep leprogramme&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Patchez le programme&lt;/li&gt;
&lt;li&gt;Utilisez les scripts debuild (sous debian) pour recompiler le package :&lt;br /&gt;&lt;code&gt;debuild -us -uc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Installez finalement le package généré :&lt;br /&gt;&lt;code&gt;dpkg -i *.deb&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. Pour conclure&lt;/h3&gt;
&lt;p&gt;En conclusion je dirais qu'il est toujours difficile de compiler la première fois, surtout si on ne l'a jamais fait, il faut de la persévérance pour avoir envie d'ajouter tout ce qui manque, interpréter tout ce qui ne fonctionne pas, comprendre la documentation (si elle existe). Mais une fois terminé, non seulement vous ressentirez la fierté partenelle d'avoir compilé votre premier programme, mais vous pourrez aussi le recompiler autant de fois que vous voulez, puisque la procédure reste toujours à peu près la même pour le même programme.&lt;/p&gt;
&lt;p&gt;Ce que je conseille c'est de se faire des &quot;fiches&quot;, de la doc sur &quot;ha oui, pour compiler ça j'ai bloqué là et j'ai résolu comme ça&quot;, d'abord pour vous, et si c'est utile pour d'autres gens tant mieux. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Installer Teeworlds depuis les sources</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2010/10/14/Installer-Teeworlds-depuis-les-sources</link>
        <guid isPermaLink="false">urn:md5:731ce0a3b8ab4ea1ce76626f6bf60ec3</guid>
        <pubDate>Thu, 14 Oct 2010 19:58:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>compilation</category>
                  <category>informatique</category>
                  <category>note</category>
                  <category>teeworlds</category>
                <description>          &lt;p&gt;La dernière version de Teeworlds se faisant désirer, voici comment compiler pour linux depuis les sources :&lt;/p&gt;
&lt;h3&gt;Vérification des dépendances&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;libx11-dev&lt;/li&gt;
&lt;li&gt;libsdl-dev&lt;/li&gt;
&lt;li&gt;libglu-dev&lt;/li&gt;
&lt;li&gt;libgl-dev&lt;/li&gt;
&lt;li&gt;libasound-dev&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Clone du repos&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;git clone http://github.com/oy/teeworlds.git&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Récupération de bam&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;wget http://github.com/downloads/matricks/bam/bam-0.4.0.tar.gz&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Extraction et Compilation de bam&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;tar -xzf bam-0.4.0.tar.gz&lt;/li&gt;
&lt;li&gt;cd bam-0.4.0/&lt;/li&gt;
&lt;li&gt;./make_unix.sh&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Compilation de Teeworlds&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;cd ../teeworlds&lt;/li&gt;
&lt;li&gt;../bam-0.0.4/bam release&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;</description>
        
              </item>
      </channel>
</rss>
