attention : assignment makes pointer from integer without a cast
Bonjour,
je suis assez débutant en C bien que je sache un peu programmer en fortran, basic et autres shell's. (ou batch du MS-DOS)
Donc les problèmes principaux que j'ai ont trait à ce qui est spécifique au C, à savoir les pointeurs !
Donc je me retrouve à la compil' par gcc avec l'erreur suivante :
Code:
attention : assignment makes pointer from integer without a cast
et la ligne incriminée est :
Code:
hp = gethostbyname(serv);
Il va sans dire que hp est bien déclaré comme un pointeur vers une structure hostent, ce qui est ce que retourne la fonction gethostbyname().
Par contre le man de gethostbyname, me dit qu'il faudrait inclure le header netdb.h qui ne l'est pas dans l'original du programme que je tente de modifier;
Quand je l'ajoute, il se produit de nouvelles erreurs à l'édition de liens, à savoir :
Code:
1 2 3 4 5 6 7
| undefined reference to `__res_mkquery'
undefined reference to `__res_send'
undefined reference to `__dn_skipname'
undefined reference to `__dn_expand'
undefined reference to `_getshort'
undefined reference to `_getshort'
undefined reference to `__dn_expand' |
Pourtant, ces symboles ne sont utilisés nulle part dans le code que je modifie.
Comment définir ces symboles manquants ? Faut il un autre header et lequel ? (mais le seul header dans lequel apparaissent ces symboles est resolv.h, qui est déjà inclus),
ou comment éviter mon problème originel de cast entre un entier et un pointeur ?
Merci,
David
Ok pour la déclaration de gethostbyname().
Ok pour l'absence de déclaration de gethostbyname(), mais il me semblait que le header servait en partie à celà.
Mon compilo est un gcc qui dit tout ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| david@test:~$ gcc -v
Utilisation des specs internes.
Target: i486-linux-gnu
Configuré avec: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4'
--with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3
--program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug
--enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic
--enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu
--target=i486-linux-gnu
Modèle de thread: posix
gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4) |
Citation:
Un compilo bien configuré t'aurait en plus donné un warning "implicit declaration of gethostbyname".
Et je ne pense pas qu'il y ait de Pb de configuration d'icelui puisque je suis passé directement d'ubuntu 8.04 en 9.04, sans aucune bidouille de ma part. (sur un PC à 2.67 GHz)
David
P.S. la deuxième série d'erreurs se présente quand le "#include <netdb.h>" est présent;
et les différentes références non définies appartiennent toutes à resolv.h .
P.S.2 : et quand je commente le "#include <resolv.h>" il se produit exactement la même chose (cette même série d'erreurs "undefined ...") que quand il était là.