Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 18/07/2007, à 22:47

Link31

IMPORTANT : comment compiler un programme sous Ubuntu

Lisez la documentation avant de poser une question dans cette section du forum :

Documentation sur la compilation



I. Les paquets nécessaires
Installer en priorité le paquet build-essential.

Les langages de programmation (non-interprétés) les plus populaires sous Linux sont le C et le C++.
Si vous récupérez le code source d'un programme sur internet, il sera très probablement écrit dans l'un de ces langages. Si vous voulez vous initier à le programmation, le C est un bon moyen de débuter.

Dans tous les cas, pour compiler un code en C/C++ et le transformer un programme utilisable, le paquet à installer est : build-essential.

sudo apt-get install build-essential

Ce paquet est un méta-paquet, qui va installer plusieurs autres paquets requis pour compiler sans problèmes.

II. Vérifier le fonctionnement

Voici un code simple en C pour tester si tout fonctionne bien :

- enregistrez ce code sous le nom test.c :

#include <stdio.h>

int main(int argc, char* argv[])
{
     printf("Tout fonctionne correctement !\n");
     return 0;
}

- ouvrez un terminal, et lancez la commandes suivantes (en supposant que test.c soit dans votre répertoire personnel) :

gcc test.c -o test

- pour exécuter le programme :

./test

III. Les erreurs rencontrées

Il faut éviter d'installer les différents paquets de développement (gcc, binutils, make...) séparément, l'absence de l'un d'entre eux peut conduire à ce type d'erreurs :

test.c: erreur: stdio.h : Aucun fichier ou répertoire de ce type
test.c: In function «main»:
test.c: attention : incompatible implicit declaration of built-in function «printf»

checking for C compiler default output file name... configure: error: C compiler cannot create executables

gcc: commande introuvable (ou "not found")
g++: commande introuvable
cc: commande introuvable

I can't find <xxx.h>.

Si vous rencontrez l'une de ces erreurs, la solution est d'installer le paquet build-essential.

IV. Compiler un code source téléchargé (le plus souvent *.tar.gz ou *.tar.bz2)

Pour compiler un programme récupéré sous forme de code source sur internet, la démarche habituelle est :

./autogen.sh

(ce n'est pas toujours nécessaire, vérifiez si un fichier autogen.sh est présent)
puis :

./configure
make
sudo make install

(le sudo n'est nécessaire que pour l'étape d'installation)

Il existe des variantes selon les programmes, c'est pourquoi il est généralement recommandé de lire le fichier README qui vient avec les sources. Mais vous pouvez très bien essayer la méthode générique avant wink

Notez que sous Ubuntu, il est recommandé de créer des paquets .deb à l'étape d'installation, en remplaçant sudo make install par sudo checkinstall (plus d'infos dans la documentation)

V. Installer les bibliothèques nécessaires et leurs headers

Pendant l'étape du ./configure, le système de compilation cherche les bibliothèques et les headers nécessaires sur votre système. Lorsque l'un d'eux est introuvable, il affiche un message d'explication.
À partir de là, il faut essayer de deviner quel est le paquet manquant. Une bonne piste est de rechercher les paquets de développement, par exemple si le configure réclame SDL-1.2 ou libSDL-1.2, il faudra installer le paquet libsdl-1.2-dev, ou un nom approchant.
Il peut être utile de chercher quel paquet contient tel fichier grâce au site packages.ubuntu.com.

Dernière modification par Ju. (Le 18/07/2007, à 23:00)

Hors ligne

#2 Le 19/07/2007, à 15:00

Le Barde

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Link31 : Tout arrive à point à qui sait attendre !
Merci pour cet épinglé et pour ton combat.

Hors ligne

#3 Le 31/07/2007, à 13:26

eomer212

Re : IMPORTANT : comment compiler un programme sous Ubuntu

hum, à quoi sert le ./ devant le nom du programme??
(je sais, c'est évident, mais linux, ca fait 24h seulement..)

d'autre part, ou est-ce que le compilo range l'executable..??

#4 Le 31/07/2007, à 13:39

AuraHxC

Re : IMPORTANT : comment compiler un programme sous Ubuntu

./ te permet d'executer un executable => et le compilo le range ou tu lui stipule de le ranger wink
Donc si tu stipule rien il va te le ranger dans le dossier où tu compile.

Hors ligne

#5 Le 31/07/2007, à 13:59

reeth

Re : IMPORTANT : comment compiler un programme sous Ubuntu

./ sa ne veux pas dire aussi que le prog à exécuter est dans le répertoire courant? (et que ce n'est pas un alias)? (je pose la question parce que j'en sais rien ^^)

Hors ligne

#6 Le 31/07/2007, à 14:13

AuraHxC

Re : IMPORTANT : comment compiler un programme sous Ubuntu

oui tu tape ./nom_du_programme si tu es effectivement dans le répertoire de l'executable mais rien ne t'empeche de taper si tu es dans un dossier musique qui est dans ton home et que tu as un executable dans ton dossier programmation de faire ./home/ton_nom/programmation/C/nom_de_ton_executable
ou si tu as un executable sur ton bureau => ./Desktop/nom_de_ton_exec.

Enfin voilà le principe.

Sinon tu peux aussi stipuler dans ton .bashrc des dossier ou tu stock des executables (modifier le PATH) et ainsi ne taper que le nom de l'executable => le même principe que /usr/bin ou sont stocké tes applications.

Dernière modification par AuraHxC (Le 31/07/2007, à 14:14)

Hors ligne

#7 Le 04/08/2007, à 18:32

cardiomax2000

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Eu question à la con, que signifie le -o dans la commande??? Sinon ça marche niquel merci!!!!


Jeune et con

Hors ligne

#8 Le 04/08/2007, à 18:38

foustala

Re : IMPORTANT : comment compiler un programme sous Ubuntu

cardiomax2000 a écrit :

Que signifie le -o dans la commande gcc test.c -o test

o comme output

Hors ligne

#9 Le 18/08/2007, à 00:54

trucutu

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Si des fonctions C posent problèmes à la compilation, consulter les pages de man peut aider :

sudo apt-get install manpages-dev

puis par exemple :

man 2 mkdir

La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#10 Le 19/08/2007, à 22:23

The_true_power

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Est-il possible de faire la maneuvre inverse ?
ex : j'aimerais modifier un programme, j'aimerais donc le retransformer en script c++ ou ce qu'il était avant.

Hors ligne

#11 Le 20/08/2007, à 12:17

reeth

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Tu veux dire le décompiler?? Je te conseille de chercher les sources, à mon avis sa sera moins compliqué (bien que je n'ai jamais fait de décompilation ^^)

Hors ligne

#12 Le 20/08/2007, à 12:25

AuraHxC

Re : IMPORTANT : comment compiler un programme sous Ubuntu

En général tu peux décompiler pour obtenir le code assembleur : désassembler.
Mais avoir le code source du départ, j'en suis pas sûr.

Hors ligne

#13 Le 20/08/2007, à 16:25

The_true_power

Re : IMPORTANT : comment compiler un programme sous Ubuntu

En fait c'est une application de base... (reboot) cf mon topic.

Hors ligne

#14 Le 20/08/2007, à 16:53

reeth

Re : IMPORTANT : comment compiler un programme sous Ubuntu

La décompilation (avec des noms de décompilateurs)

Hors ligne

#15 Le 20/08/2007, à 17:19

sirius10

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Salut

Merci pour le post, au moins ca c est clair!!!

Est il possible de decompiler un noyau??

Par ex :
sudo make uninstall..


"Pour ce qui est de l'Avenir, il ne s’agit pas de le prévoir, mais de le rendre possible."     
Antoine de Saint-Exupéry

Hors ligne

#16 Le 21/08/2007, à 13:12

Link31

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Décompiler ou désinstaller un noyau ?

Le décompiler, c'est quasiment impossible. C'est déjà assez difficile de décompiler un helloworld de 4 ko, alors avec un noyau de plus d'1 Mo... roll
Enfin je ne vois pas l'intérêt (si on parle bien de Linux), puisque le noyau Linux étant sous GPL, tu as obligatoirement accès au code source de la version binaire que tu utilises.

Pour le désinstaller, si tu as utilisé checkinstall, il suffit de l'enlever depuis Synaptic. Si tu l'as installé "à la main", il faut le supprimer du dossier /boot (ou simplement supprimer son entrée dans le fichier /boot/grub/menu.lst). Puis il peut être utile de réinstaller un noyau "officiel", même si il est déjà présent, pour remettre les choses en place (notamment les modules).

Hors ligne

#17 Le 23/08/2007, à 10:59

Le Barde

Re : IMPORTANT : comment compiler un programme sous Ubuntu

(Au fait comme titre, tu pourrais mettre "IMPORTANT : Comment compiler un programme C/C++ sous Ubuntu" au lieu de "IMPORTANT : comment compiler un programme sous Ubuntu" : ce post ne s'adresse effectivement pas aux utilisateurs d'autres langages de programmation compilés)

Hors ligne

#18 Le 23/08/2007, à 15:46

Link31

Re : IMPORTANT : comment compiler un programme sous Ubuntu

La partie IV reste tout de même valable (en théorie) pour n'importe quel langage.

Mais est-ce que cela vaut le coup d'allonger indéfiniment le titre de ce post pour apporter ce genre de précisions, étant donné que 99% des programmes non-interprétés sous Linux sont en C/C++ ?

Hors ligne

#19 Le 06/10/2007, à 18:58

Link31

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Serait-il possible de remettre ce sujet en épinglé ? Parce que le moins qu'on puisse dire, c'est qu'il n'est pas assez visible, et donc inutile.

La preuve (et je ne donne que les messages les plus récents) :
http://forum.ubuntu-fr.org/viewtopic.php?id=152312
http://forum.ubuntu-fr.org/viewtopic.php?id=152795
http://forum.ubuntu-fr.org/viewtopic.php?id=152783

Merci.

Hors ligne

#20 Le 06/10/2007, à 19:04

mr_pouit

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Je l'ai épinglé (faut vraiment que les gens apprennent à lire, c'est écrit dans la zone de rappel au dessus du forum hmm).


N'hésitez pas à venir sur #ubuntu-fr-devel et #u-classroom (FreeNode) !
Ma page perso -- Mon blog

Hors ligne

#21 Le 13/10/2007, à 02:30

nouaf

Re : IMPORTANT : comment compiler un programme sous Ubuntu

salut tout le monde bain je veut que vous m'aidiez a installer des l'ogiciel a ubuntu et comment les faire afficher sur le bureau

Hors ligne

#22 Le 13/10/2007, à 23:57

atoufix

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Rajouter un chmod +x Makefile dans le auto gen.

atoufix

Hors ligne

#23 Le 31/10/2007, à 18:28

Remi_tbl

Re : IMPORTANT : comment compiler un programme sous Ubuntu

J'ai bien cherche le FORUM avant de poser cette question...

Mon systeme:

AMD TURION 64 dual core
mon laptop HP
Mon ubuntu 7.04

Mon probleme:

1- pas de crt1.o et autres programmes racines de compilateur gcc nul part sur ma
machine.

2- Je ne peux pas installer build-essential parce que:

sudo apt-get install build-essential
[...]

Les paquets suivants contiennent des dépendances non satisfaites :
  build-essential: Dépend: libc6-dev mais ne sera pas installé ou
                            libc-dev
                   Dépend: g++ (>= 4:4.1.1) mais ne sera pas installé
E: Paquets défectueux

J'ai une version de libc6 2.1.6-6 qui me bloque completement, peut pas installer libc6-dev, g++
meme pb.

Donc je ne peux pas compiler...

soupir...

Que faire?

Remi

#24 Le 31/10/2007, à 19:00

Link31

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Est-ce que tu n'aurais pas ajouté des dépôts non fiables à ton sources.list ?
Si tu n'as que les dépôts officiels, alors c'est une erreur des mainteneurs d'Ubuntu, qui devrait être corrigée au plus vite.

Hors ligne

#25 Le 31/10/2007, à 19:13

mr_pouit

Re : IMPORTANT : comment compiler un programme sous Ubuntu

Remi_tbl a écrit :

J'ai une version de libc6 2.1.6-6 qui me bloque completement, peut pas installer libc6-dev, g++

Si c'est une erreur de frappe (2.1.6-6 au lieu de 2.6.1-6), tu as probablement activé les dépôts ubuntu hardy et/ou debian unstable alors que tu es sous feisty. wink


N'hésitez pas à venir sur #ubuntu-fr-devel et #u-classroom (FreeNode) !
Ma page perso -- Mon blog

Hors ligne

Haut de page ↑