Comment faire pour récupérer des librairies sous linux-gcc
ni4m0r
Posté le 26-01-2006 à 15:58:03
Bonjour,
Je suis un newbie de la programmation en c et de linux (ubuntu), et j'essaie de faire fonctionner un programme en C (avec gcc 4.02) permettant d'acquérir les valeurs d'un petit clavier 12 touches que j'ai réalisé et qui se branche sur le port parallèle de mon pc (laptop-acer aspire 1350). J'avais déjà réalisé un programme qui fonctionnait sous le dos :
Mais lorsque j'essai de le compiler sous linux j'obtiens les messages d'erreur suivant :
>romain@rom:~/Major Project$ gcc -c Keypad-1.c
>Keypad-1.c:2:18: error: conio.h: No such file or directory
et
> romain@rom:~/Major Project$ gcc -o Keypad-1 Keypad-1.o
> Keypad-1.o: In function `main':
> Keypad-1.c.text+0x1d): undefined reference to `clrscr'
> Keypad-1.c.text+0x3f): undefined reference to `inportb'
> Keypad-1.c.text+0x63): undefined reference to `inportb'
> Keypad-1.c.text+0x85): undefined reference to `inportb'
> collect2: ld returned 1 exit status
Apparement, le conio.h n'existe plus sous linux, il serait remplacer par un certain ncurses.h , plus complet. Seulement lorque j'essaie de le remplacer , j'obtien le message d'erreur suivant :
> romain@rom:~/Major Project$ gcc -c Keypad-1.c
> Keypad-1.c:2:20: error: ncurses.h: No such file or directory
> romain@rom:~/Major Project$ gcc -o Keypad-1 Keypad-1.o
> Keypad-1.o: In function `main':
> Keypad-1.c.text+0x1d): undefined reference to `clrscr'
> Keypad-1.c.text+0x3f): undefined reference to `inportb'
> Keypad-1.c.text+0x63): undefined reference to `inportb'
> Keypad-1.c.text+0x85): undefined reference to `inportb'
> collect2: ld returned 1 exit status
C donc le meme probleme, Alors voilà mes questions:
-Comment faire pour rajouter les librairies conio.h et/ou ncurses.h
-Y'a t'il un rapport avec les undefined reference to ...
-Que veut dire "collect2: ld returned 1 exit status"
-Est-ce que la librairie stdio.h ne suffit pas à elle seul ?
---------------
Viendez vous battre à Prologin \o/
Zavie
Test, du travail de pro !
Posté le 26-01-2006 à 20:04:11
Pour ce qui est des curses, il faut installer le paquet correspondant. Je ne me souviens plus du nom : c'est probablement ncurses-dev ou quelque chose de proche.
Dans une console root :
# apt-cache search ncurses | grep dev
... (Noter le nom du paquet dans ce qui sort)
# apt-get install [le paquet en question]
---------------
Viendez vous battre à Prologin \o/
Il utilise une méthode éprouvée : l'erreur de compilation. ^_^
non, il génère une déclaration dite implicite, ca n'entraine pas d'erreur à l'étape compilation mais à l'édition des lien si la fonction n'est pas définie
non, il génère une déclaration dite implicite, ca n'entraine pas d'erreur à l'étape compilation mais à l'édition des lien si la fonction n'est pas définie
effectivement : si on lui demande l'option -c (c'est-à-dire complilation sans édition de liens), il s'en moque pas mal
non, il génère une déclaration dite implicite, ca n'entraine pas d'erreur à l'étape compilation mais à l'édition des lien si la fonction n'est pas définie
Mais si elle est définie et que le code est compilable, le comportement est indéfini.
effectivement : si on lui demande l'option -c (c'est-à-dire complilation sans édition de liens), il s'en moque pas mal
L'edition de lien passe aussi si la fonction existe. Le linkeur s'en moque encore plus que le compilo (et pour cause, le linkeur ne voit pas les declarations). Bref appeler une fonction non definie ca ne genere pas d'erreur. Au mieux, un warning.
L'edition de lien passe aussi si la fonction existe. Le linkeur s'en moque encore plus que le compilo (et pour cause, le linkeur ne voit pas les declarations). Bref appeler une fonction non definie ca ne genere pas d'erreur. Au mieux, un warning.