Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

mogeb a écrit :

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 smile 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