#1 Le 09/02/2012, à 20:40
- yochi376
[Résolu] Programmation C et libX11 sous Ubuntu 11.10
Bonsoir à tous,
Je suis nouveau sur le forum, et c'est ma première véritable expérience sous Linux.
J'ai installé Ubuntu 11.10 Unity dans Windows.
A la fac, nous avons un projet de programmation en langage C dans lequel nous devons gérer des fênetres graphiques.
Il est indiqué dans mon énoncé que nous allons utiliser la bibliothèque Xlib ; toutefois pour simplifier la tâche on nous a fourni des fichiers graphic.c et graphic.h, écris de telle manière que la programmation sera simplifiée.
Pour compiler la librairie graphic.c on me propose ces commandes :
cc graphic.c -c
ar -r libgraphic.a graphic.o
La compilation se déroule correctement.
Par contre, au moment de générer un executable, ça coince :
cc projet.c -lm -lX11 -lgraphic -L./
J'ai pas mal de fonctions non référencées ...
graphic.o: In function `GrInitGraphic':
graphic.c:(.text+0x46): undefined reference to `XOpenDisplay'
graphic.c:(.text+0x17b): undefined reference to `XCreateSimpleWindow'
graphic.c:(.text+0x1ab): undefined reference to `XSelectInput'
graphic.c:(.text+0x1c9): undefined reference to `XStoreName'
graphic.c:(.text+0x1e0): undefined reference to `XMapWindow'
graphic.c:(.text+0x261): undefined reference to `XCloseDisplay'
graphic.c:(.text+0x28e): undefined reference to `XNextEvent'
[...]
...et la liste est longue !
A ce que j'ai compris, la librairie graphic.c me permet de faire l'interface entre mon programme et Xlib.
Est-ce que mes erreurs proviennent du fait que je ne dispose pas de Xlib (LibX11) sur mon installation ?
Merci pour votre aide !
[EDIT]
Problème résolu en compilant avec la commande :
cc main.c -lX11 -lgraphic -L./ `pkg-config --libs --cflags x11` -lm
Dernière modification par yochi376 (Le 10/02/2012, à 17:13)
Hors ligne
#2 Le 09/02/2012, à 20:50
- mogeb
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Qu'obtiens-tu si tu lances la commande suivante:
dpkg --get-selections | grep x11
Hors ligne
#3 Le 09/02/2012, à 20:55
- Spitfire 95
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Qu'obtiens-tu si tu lances la commande suivante:
dpkg --get-selections | grep x11
ou pkg -l | grep x11 c'est pareil en plus court.
Il te manque des paquets de développement x11.
fais sudo apt-get install libx11-dev et ça devrait fonctionner.
==EDIT==
Pas bon
Dernière modification par Spitfire 95 (Le 09/02/2012, à 20:56)
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#4 Le 09/02/2012, à 20:55
- yochi376
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Bonsoir,
j'obtiens les lignes suivantes :
dbus-x11 install
libx11-6 install
libx11-data install
libx11-dev install
libx11-xcb1 install
pulseaudio-module-x11 install
x11-apps install
x11-common install
x11-session-utils install
x11-utils install
x11-xfs-utils install
x11-xkb-utils install
x11-xserver-utils install
x11proto-core-dev install
x11proto-input-dev install
x11proto-kb-dev install
x11proto-xext-dev install
Et lorsque je lance la commande "sudo apt-get install libx11-dev" j'obtiens :
Reading package lists... Done
Building dependency tree
Reading state information... Done
libx11-dev est déjà la plus récente version disponible.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Dernière modification par yochi376 (Le 09/02/2012, à 20:57)
Hors ligne
#5 Le 09/02/2012, à 20:57
- Spitfire 95
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Essaye de compiler comme ça :
cc projet.c -lm -lX11 -lgraphic -L./ `pkg-config --libs --cflags x11`
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#6 Le 09/02/2012, à 20:58
- mogeb
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Essaies maintenant:
pkg-config --cflags --libs x11
Hors ligne
#7 Le 09/02/2012, à 21:01
- yochi376
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Je crois que ça fonctionne ! Par contre il me reste encore un truc qui n'est pas référencé, c'est "floor" ?
cw3@ubuntu:~/Bureau/v5$ cc main.c -lm -lX11 -lgraphic -L./ `pkg-config --libs --cflags x11`
.//libgraphic.a(graphic.o): In function `GrRand':
graphic.c:(.text+0x76b): undefined reference to `floor'
collect2: ld returned 1 exit status
Pourtant, dans graphic.c, j'ai bien #include <math.h> ...
Dernière modification par yochi376 (Le 09/02/2012, à 21:32)
Hors ligne
#8 Le 10/02/2012, à 09:00
- yochi376
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
La fonction "floor" appartient bien à math.c/math.h ?
J'ai lu sur un forum qu'il fallait que le #include <math.h> soit à la fin de la liste des #include ; de même pour -lm lorsque je dois compiler (qui devrait être à la fin des -l...) ; est-ce que ça a une réelle importance ?
Hors ligne
#9 Le 10/02/2012, à 09:15
- Spitfire 95
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Aucune, la norme POSIX dit que les #include des fonctions systèmes doivent être prévus pour pouvoir être réalisés dans n'importe quel ordre.
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#10 Le 10/02/2012, à 11:12
- grim7reaper
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Salut,
Faut mettre toutes les bibliothèques que tu link à la fin de la ligne de compilation (donc le -lm pour les maths aussi).
C’est la faute d’Ubuntu qui a changé les options par défaut de l’éditeur de liens…
Dernière modification par grim7reaper (Le 10/02/2012, à 11:12)
Hors ligne
#11 Le 10/02/2012, à 17:12
- yochi376
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
@grim7reaper :
En effet, ça compile sans soucis lorsque j'écris la commande avec -lm en fin :
cc main.c -lX11 -lgraphic -L./ `pkg-config --libs --cflags x11` -lm
Merci beaucoup pour vos réponses et votre aide préciseuse c'est pas évident de passer de Windows à Linux, tout ce travail par lignes de commandes, c'est assez flou pour moi pour le moment !
Hors ligne
#12 Le 18/11/2017, à 22:46
- ogot
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Bonjour,
je reprends du code sous Ubuntu 16.04 LTS initialement écrit sous Suse 7.0 avec les librairies X11,
que sont devenus
les includes suivants :
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
?
Merci de votre aide
Hors ligne
#13 Le 18/11/2017, à 23:12
- Roschan
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
C'est une discussion vieille de près de 6 ans, je ne pense pas que ce soit le meilleur endroit où trouver l'aide recherchée
Hors ligne
#14 Le 19/11/2017, à 23:03
- ogot
Re : [Résolu] Programmation C et libX11 sous Ubuntu 11.10
Je suis bien conscient du manque d'a propos de mon questionnement et de bien vouloir me pardonner mon manque d'assiduité depuis plus de 18ans mais je serai très heureux si toutefois vous pouviez m'indiquer une source qui puisse me permettre de recompiler mon code.
Merci de votre réponse
Hors ligne