Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
887 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Comment faire pour récupérer des librairies sous linux-gcc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment faire pour récupérer des librairies sous linux-gcc

n°1292776
ni4m0r
Posté le 26-01-2006 à 15:58:03  profilanswer
 

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 :
 
>#include<stdio.h>
>#include<conio.h>
>
>main()
>{
> int x,i;
> clrscr();
> for(i=1;i<10;i++)
> {
>
>  do
>  {
>   x=inportb(0x379);
>   x=x&0x0080;
>  }while(x!=0);
>  
>  do
>  {
>   x=inportb(0x379);
>   x=x&0x0080;
>  }while(x==0);
>
> x= inportb(0x379);
> x=x>>3;
> printf("key is : %d\n",x);
>
> }
>}
 
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 ?
 
Merci d'avance pour votre aide!


Message édité par ni4m0r le 26-01-2006 à 16:00:33
mood
Publicité
Posté le 26-01-2006 à 15:58:03  profilanswer
 

n°1292821
_darkalt3_
Proctopathe
Posté le 26-01-2006 à 16:35:47  profilanswer
 

Pour les entêtes: je te laisse le soin de consulter http://forum.hardware.fr/hardwaref [...] 4-1.htm#t0
 
pour les undefined: si les fonctions que tu appelles n'appartiennent à aucun fichier d'entête que tu inclues, c'est normal qu'il ne puisse compiler.
 
collect2: le link est impossible puisque les binaires n'ont pas été générés
 
stdio.h ne contient pas tout, et en général ne suffit pas.

n°1292893
skelter
Posté le 26-01-2006 à 17:26:08  profilanswer
 

_darkalt3_ a écrit :

pour les undefined: si les fonctions que tu appelles n'appartiennent à aucun fichier d'entête que tu inclues, c'est normal qu'il ne puisse compiler.


 
si il arrive à compiler (le compilateur sait se débrouiller lorsque qu'une fonction n'est pas déclarée), c'est ld (le linker gnu) qui gueule

Message cité 1 fois
Message édité par skelter le 26-01-2006 à 17:26:46
n°1292965
Dumbledore
Posté le 26-01-2006 à 18:58:05  profilanswer
 

Je ne suis pas sûr que conio.h existe sous Linux, surtout que cette lib n'est pas reconnue par le standard ANSI.
 
Pour ncurses, suffit de l'installer accompagné des libs de développement....
 
stdio = standard input/output, ça contient seulement ce qu'il faut pour faire des printf, des scanf et de la lecture de fichiers (en gros)

n°1292994
_darkalt3_
Proctopathe
Posté le 26-01-2006 à 19:43:02  profilanswer
 

skelter a écrit :

le compilateur sait se débrouiller lorsque qu'une fonction n'est pas déclarée


 
[:pingouino]

n°1293003
Zavie
Test, du travail de pro !
Posté le 26-01-2006 à 20:00:41  profilanswer
 

Il utilise une méthode éprouvée : l'erreur de compilation. ^_^


---------------
Viendez vous battre à Prologin \o/
n°1293006
Zavie
Test, du travail de pro !
Posté le 26-01-2006 à 20:04:11  profilanswer
 

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/
n°1293032
skelter
Posté le 26-01-2006 à 21:08:18  profilanswer
 

Zavie a écrit :

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

n°1293069
jimipage
déclarer c'est fatiguant
Posté le 26-01-2006 à 23:02:33  profilanswer
 

skelter a écrit :

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

n°1293072
Elmoricq
Modérateur
Posté le 26-01-2006 à 23:05:55  profilanswer
 

Sauf pour le bazillion de warnings qu'il te balance.

mood
Publicité
Posté le 26-01-2006 à 23:05:55  profilanswer
 

n°1293074
Emmanuel D​elahaye
C is a sharp tool
Posté le 26-01-2006 à 23:11:45  profilanswer
 

skelter a écrit :

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.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1293089
skelter
Posté le 27-01-2006 à 00:00:37  profilanswer
 

Emmanuel Delahaye a écrit :

Mais si elle est définie et que le code est compilable, le comportement est indéfini.


 
tout a fais, ca peut etre la cause de bugs assez vicieux et gcc y dédie un warning (option -Wimplicit)

n°1293101
matafan
Posté le 27-01-2006 à 00:16:54  profilanswer
 

jimipage a écrit :

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.

n°1293138
Emmanuel D​elahaye
C is a sharp tool
Posté le 27-01-2006 à 08:02:21  profilanswer
 

matafan a écrit :

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.


Avec gcc, je recommande

-Werror-implicit-function-declaration


ça fait le ménage !


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1293146
_darkalt3_
Proctopathe
Posté le 27-01-2006 à 08:38:16  profilanswer
 

'Faut aimer jouer avec le feu :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Comment faire pour récupérer des librairies sous linux-gcc

 

Sujets relatifs
recuperer la valeur d'une variable javascript ??comment récupérer un fichier son???
récupérer un date via formulaire et l'insérer ds champ date [RESOLU][Résolu]Récupérer la valeur d'un radiobutton
Récupérer des imbrications multiples dans une table MySQLProblème pour récupérer donnée en php
Recuperer valeur d'une liste deroulante en javascriptRécuperer valeur input
[VB6] recuperer une chaine dans une chaine...[Eclipse 3.1] Eclipse rame sous linux, Que faire ?
Plus de sujets relatifs à : Comment faire pour récupérer des librairies sous linux-gcc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR