Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.
Léa-Linux : Forum
Le forum de Léa abrite des discussions autour des Logiciels libres.
Syndication
  • RSS ForumForum complet
  • RSS Forum - DéveloppementForum - Développement
  • RSS Forum - Développement - 130657Cette discussion

Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Important : quand vous posez une question, n'oubliez pas de nous donner les indications suffisantes pour que nous puissions répondre. En effet, la divination n'est pas le fort du Linuxien averti. Pour une meilleure compréhension, le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument. En cas d'abus, il pourra être censuré sans autre forme de procès.
Les messages dont le contenu est illégal (incitant à la haine - raciale ou autre, diffamant), ou dont le contenu est sans rapport avec le sujet du forum, ou qui sont parfaitement stupides ou hors sujet seront supprimés sans pitié. Il pourra même être fait appel au fournisseur d'accès du coupable pour faire cesser ses agissements.
» Index du forum » Développement » linkage
Aller à la discussion: PrécédentSuivante
Action: Nouveau sujetChercherS'authentifier
linkage
Auteur: bloodaxe (IP enregistrée)
Date: le 10 février 2004 à 22:16

Bonjour, je me lance dans la programmation linux et voila deja les 1ere soucis lol. alor je compile sans prob ca me fait bien le fichier objet, mais lorsque que je veu linker ca me fait ca
essai.o(.text+0x16): In function `main':
: undefined reference to `XOpenDisplay'
essai.o(.text+0x81): In function `main':
: undefined reference to `XCreateSimpleWindow'
essai.o(.text+0x95): In function `main':
: undefined reference to `XMapWindow'
essai.o(.text+0xa8): In function `main':
: undefined reference to `XSelectInput'
essai.o(.text+0xba): In function `main':
: undefined reference to `XNextEvent'
essai.o(.text+0xc8): In function `main':
: undefined reference to `XFlush'
collect2: ld returned 1 exit status
[root@localhost essai$]# g++ /usr/X11R6/lib/ essai.o
/usr/X11R6/lib/: file not recognized: Is a directory
collect2: ld returned 1 exit status
pourtt a l'appelle de gcc je fai ca:

g++ -L /usr/X11R6/lib/ essai.o -o essai

la location des librairies doit etre bonne g verifier avec locate

c un programme en xlib si quelqu'un peu m'aider merci sa me fait exactement pareil avec un autre programme en qt3. je suis sous md9.2

Re: linkage
Auteur: svear (IP enregistrée)
Date: le 14 février 2004 à 01:30

Je pense que tes fonctions "XOpenDisplay", "XMapWindow", "XSelectInput"; enfin toutes les fonctions non définies font partie d'une librairie mais comme je ne sais pas laquelle je vais la symboliser par "/usr/X11R6/lib/Xlib.a"

Il faut, lorsque tu compiles ton programme, que tu lui dises dans quelle librairie il trouvera ces fonctions spéciales. le compilateur n'inclut par défaut que la librairie principale du C "/usr/lib/libc.a". Si tu en utilises d'autres, tu dois les indiquer explicitement.

Tu dois compiler ton programme en utilisant la syntaxe suivante:
g++ -c essai.c
g++ /usr/X11R6/lib/Xlib.a essai.o -o essai

Ou bien alors, si tu n'as qu'un seul fichier source
g++ /usr/X11R6/lib/Xlib.a essai.c -o essai

Si t'as d'autres librairies à indiquer, tu peux les mettre à la suite de la première. Ex:
g++ /usr/X11R6/lib/Xlib.a /usr/lib/libm.a /usr/lib/libc.a essai.c -o essai

Pour QT, t'auras le même problème. Il faut que tu compiles ton programme en lui disant où se trouve la librairie QT

Parfois une librairie se nomme ".so" et pas ".a" (comme QT par exemple). Il s'agit alors d'une librairie dynamique. Elle ne sera pas incluse au code exécutable donc tu devras avoir la librairie sur ta machine si tu exécute le programme
1) Tu compiles comme ci-dessus en y indiquant le nom de la librairie (le nom .so)
2) Tu vérifies que ta variable "LDPATH" contient bien tous les répertoires suceptibles de contenir une librairie ".so"; chaque répertoire séparé du suivant par ":"

Et normallement, tu ne devrais plus avoir de pb...

Re: linkage
Auteur: bloodaxe (IP enregistrée)
Date: le 14 février 2004 à 14:32

si j'ai bien compris les librairie QT sont dans /usr/lib/qt3/lib mais lorsque je compile il me dit

/usr/lib/qt3/lib: file not recognized: Is a directory
collect2: ld returned 1 exit status

pourquoi il ne les trouvent pas

Re: linkage
Auteur: svear (IP enregistrée)
Date: le 14 février 2004 à 21:57

Il faut que tu compiles en mettant le nom de la librairie et pas seulement le répertoire dans lequel elle se trouve !!!
Style
g++ /usr/lib/qt3/lib/libqt.so essai.c -o essai

Ensuite, il faut que ta variable "LDPATH" contienne le répertoire dans lequel se trouve ta librairie; donc
export LDPATH="/usr/lib/qt3/lib:$LDPATH"

Ensuite, ça devrait fonctionner

Re: linkage
Auteur: bloodaxe (IP enregistrée)
Date: le 14 février 2004 à 22:04

j'ai fai une recherche sur le fichier libqt.so je ne le trouve nul part

Re: linkage
Auteur: svear (IP enregistrée)
Date: le 14 février 2004 à 22:13

J'ai mis "libqt.so" de mémoire. Essaye plutot de rechercher *.so" et/ou "*.a" à partir de "/usr/lib/qt3/lib"...

find /usr/lib/qt3/lib -name "*.so -o -name "*.a" -print



Nom du forum : (antispam) - (en développement:saisir un texte pour le message, rempli cette zone automatiquement)
Votre nom: 
Votre email: 
Sujet: 

 
Ce forum est boosté par Phorum.