Quelle option manque-t-il à gcc sur la ligne de commande lorsque l'on obtient cette erreur :
/usr/bin/ld: cannot find -lm collect2: ld returned 1 exit status Error during linking
Une option -L<libpath> qui indique le chemin de la bibliothèque libm.a
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci : /usr/lib/libm.so
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
--
Emmanuel Delahaye
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci : /usr/lib/libm.so
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
C'est l'endroit typique. Si il n'y a pas de libm.a, c'est qu'il a été effacé ou mal installé. Je suggère un réinstallation de gcc. (version 4, tant qu'à faire...)
Rien de tout cela n'a a voir avec le langage C...
-- A+
Emmanuel Delahaye
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci :
/usr/lib/libm.so
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
C'est l'endroit typique. Si il n'y a pas de libm.a, c'est qu'il a été
effacé ou mal installé. Je suggère un réinstallation de gcc. (version 4,
tant qu'à faire...)
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
C'est l'endroit typique. Si il n'y a pas de libm.a, c'est qu'il a été effacé ou mal installé. Je suggère un réinstallation de gcc. (version 4, tant qu'à faire...)
Rien de tout cela n'a a voir avec le langage C...
-- A+
Emmanuel Delahaye
Jean-Marc Bourguet
Florent Monnier writes:
Quelle option manque-t-il à gcc sur la ligne de commande lorsque l'on obtient cette erreur :
/usr/bin/ld: cannot find -lm collect2: ld returned 1 exit status Error during linking
Une option -L<libpath> qui indique le chemin de la bibliothèque libm.a
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci : /usr/lib/libm.so
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
Donne ta ligne de commande parce que gcc devrait trouver un .so sauf si tu demandes explicitement de ne pas les considérer.
Quelle option manque-t-il à gcc sur la ligne de commande lorsque l'on obtient cette erreur :
/usr/bin/ld: cannot find -lm collect2: ld returned 1 exit status Error during linking
Une option -L<libpath> qui indique le chemin de la bibliothèque libm.a
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci : /usr/lib/libm.so
C'est l'endroit le plus standard, les .a sont facultatifs et ne servent que lorsqu'on veut linker de manière statique, généralement on linke avec les .so (shared object) Veille à linker de manière dynamique, en prenant un makefile au hasard, je trouve : CFLAGS = -W -Wall -fPIC -shared LDFLAGS = -rdynamic mais je pense que le défaut est de linker dynamiquement. voir man gcc Ou alors installe la libm.a pour linker statiquement (généralement peu conseillé), si tu as installé 'à la main' partir d'un tar.gz, faire, si tu as le password de root : $ su -c 'make install-static' Je ne suis pas du tout sûr de la cible 'install-static' mais ça doit être quelque chose comme ça, voir le makefile. Sinon, les libs statiques peuvent peut-être, suivant la distribution, être dans un package différent
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
Ce n'est pas la peine de le préciser, /usr/lib et /lib sont je pense toujours cherchées.
Si ça ne marche toujours pas, il peut y avoir plusieurs raisons à l'erreur :
. libm.so est un lien symbolique cassé : $ cd /usr/lib $ file libm.so devrait dire quelque chose comme ça : libm.so: symbolic link to `/lib/libm.so.6` voire même, mais ce serait étonnant : libm.so: ELF <blah> shared object <blah> si tu as 'broken', quelque chose comme ça : libm.so: broken symbolic link to `/lib/libm.so.6` désinstalle et réinstalle.
. Peut-être plus plausible, il n'y a pas eu de ldconfig après l'install de la librairie, il peut être nécessaire de le faire à la main suivant la manière dont on a installé : $ man ldconfig $ su -c '/sbin/ldconfig' (il faut connaitre le password de root)
. Il peut peut-être y avoir d'autres raisons, mais comme ça, là, je ne vois pas. Si ça ne marche toujours pas, poste sur fr.comp.os.linux.moderated
Quelle option manque-t-il à gcc sur la ligne de commande lorsque
l'on obtient cette erreur :
/usr/bin/ld: cannot find -lm
collect2: ld returned 1 exit status
Error during linking
Une option -L<libpath> qui indique le chemin de la bibliothèque
libm.a
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci :
/usr/lib/libm.so
C'est l'endroit le plus standard, les .a sont facultatifs et ne servent
que lorsqu'on veut linker de manière statique, généralement on linke
avec les .so (shared object)
Veille à linker de manière dynamique, en prenant un makefile au hasard,
je trouve :
CFLAGS = -W -Wall -fPIC -shared
LDFLAGS = -rdynamic
mais je pense que le défaut est de linker dynamiquement.
voir man gcc
Ou alors installe la libm.a pour linker statiquement (généralement peu
conseillé), si tu as installé 'à la main' partir d'un tar.gz, faire, si
tu as le password de root :
$ su -c 'make install-static'
Je ne suis pas du tout sûr de la cible 'install-static' mais ça doit
être quelque chose comme ça, voir le makefile.
Sinon, les libs statiques peuvent peut-être, suivant la distribution,
être dans un package différent
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
Ce n'est pas la peine de le préciser, /usr/lib et /lib sont je pense
toujours cherchées.
Si ça ne marche toujours pas, il peut y avoir plusieurs raisons à
l'erreur :
. libm.so est un lien symbolique cassé :
$ cd /usr/lib
$ file libm.so
devrait dire quelque chose comme ça :
libm.so: symbolic link to `/lib/libm.so.6`
voire même, mais ce serait étonnant :
libm.so: ELF <blah> shared object <blah>
si tu as 'broken', quelque chose comme ça :
libm.so: broken symbolic link to `/lib/libm.so.6`
désinstalle et réinstalle.
. Peut-être plus plausible, il n'y a pas eu de ldconfig après l'install
de la librairie, il peut être nécessaire de le faire à la main suivant
la manière dont on a installé :
$ man ldconfig
$ su -c '/sbin/ldconfig'
(il faut connaitre le password de root)
. Il peut peut-être y avoir d'autres raisons, mais comme ça, là, je ne
vois pas.
Si ça ne marche toujours pas, poste sur fr.comp.os.linux.moderated
Quelle option manque-t-il à gcc sur la ligne de commande lorsque l'on obtient cette erreur :
/usr/bin/ld: cannot find -lm collect2: ld returned 1 exit status Error during linking
Une option -L<libpath> qui indique le chemin de la bibliothèque libm.a
Quel serait un emplacement typique de 'libm.a' ?
J'ai trouvé ceci : /usr/lib/libm.so
C'est l'endroit le plus standard, les .a sont facultatifs et ne servent que lorsqu'on veut linker de manière statique, généralement on linke avec les .so (shared object) Veille à linker de manière dynamique, en prenant un makefile au hasard, je trouve : CFLAGS = -W -Wall -fPIC -shared LDFLAGS = -rdynamic mais je pense que le défaut est de linker dynamiquement. voir man gcc Ou alors installe la libm.a pour linker statiquement (généralement peu conseillé), si tu as installé 'à la main' partir d'un tar.gz, faire, si tu as le password de root : $ su -c 'make install-static' Je ne suis pas du tout sûr de la cible 'install-static' mais ça doit être quelque chose comme ça, voir le makefile. Sinon, les libs statiques peuvent peut-être, suivant la distribution, être dans un package différent
Mais si j'ajoute '-L/usr/lib' à gcc, j'ai la même erreur.
Ce n'est pas la peine de le préciser, /usr/lib et /lib sont je pense toujours cherchées.
Si ça ne marche toujours pas, il peut y avoir plusieurs raisons à l'erreur :
. libm.so est un lien symbolique cassé : $ cd /usr/lib $ file libm.so devrait dire quelque chose comme ça : libm.so: symbolic link to `/lib/libm.so.6` voire même, mais ce serait étonnant : libm.so: ELF <blah> shared object <blah> si tu as 'broken', quelque chose comme ça : libm.so: broken symbolic link to `/lib/libm.so.6` désinstalle et réinstalle.
. Peut-être plus plausible, il n'y a pas eu de ldconfig après l'install de la librairie, il peut être nécessaire de le faire à la main suivant la manière dont on a installé : $ man ldconfig $ su -c '/sbin/ldconfig' (il faut connaitre le password de root)
. Il peut peut-être y avoir d'autres raisons, mais comme ça, là, je ne vois pas. Si ça ne marche toujours pas, poste sur fr.comp.os.linux.moderated
C'est l'endroit typique. Si il n'y a pas de libm.a, c'est qu'il a été effacé ou mal installé. Je suggère un réinstallation de gcc. (version 4, tant qu'à faire...)
merci du conseil !
Rien de tout cela n'a a voir avec le langage C...
Je vous présente toutes mes excuses, je ne savais pas. Dans quel forum aurais-je dus poster ?
--
C'est l'endroit typique. Si il n'y a pas de libm.a, c'est qu'il a été
effacé ou mal installé. Je suggère un réinstallation de gcc. (version 4,
tant qu'à faire...)
merci du conseil !
Rien de tout cela n'a a voir avec le langage C...
Je vous présente toutes mes excuses, je ne savais pas.
Dans quel forum aurais-je dus poster ?
C'est l'endroit typique. Si il n'y a pas de libm.a, c'est qu'il a été effacé ou mal installé. Je suggère un réinstallation de gcc. (version 4, tant qu'à faire...)
merci du conseil !
Rien de tout cela n'a a voir avec le langage C...
Je vous présente toutes mes excuses, je ne savais pas. Dans quel forum aurais-je dus poster ?
--
Florent Monnier
C'est l'endroit le plus standard, les .a sont facultatifs et ne servent que lorsqu'on veut linker de manière statique, généralement on linke avec les .so (shared object)
Effectivement j'essaie de linker de manière static car j'essaie de faire un CGI-bin, et que lorsque je le compile en dynamique il ne trouve pas les mêmes version des .so sur le serveur.
Je suis débutant. Peut-être que linker en static n'est pas la bonne solution pour résoudre ce type de problème. (je n'ai pas tout ce qu'il faut sur le serveur pour compiler dessus)
Ou alors installe la libm.a pour linker statiquement
(généralement peu conseillé),
Pourquoi est-ce peu conseillé ?
Sinon, les libs statiques peuvent peut-être, suivant la distribution, être dans un package différent
Quel pourrait-être un nom classique un tel package ?
--
C'est l'endroit le plus standard, les .a sont facultatifs et ne servent
que lorsqu'on veut linker de manière statique, généralement on linke
avec les .so (shared object)
Effectivement j'essaie de linker de manière static car j'essaie de faire un
CGI-bin, et que lorsque je le compile en dynamique il ne trouve pas les
mêmes version des .so sur le serveur.
Je suis débutant. Peut-être que linker en static n'est pas la bonne solution
pour résoudre ce type de problème. (je n'ai pas tout ce qu'il faut sur le
serveur pour compiler dessus)
Ou alors installe la libm.a pour linker statiquement
(généralement peu conseillé),
Pourquoi est-ce peu conseillé ?
Sinon, les libs statiques peuvent peut-être, suivant la distribution,
être dans un package différent
Quel pourrait-être un nom classique un tel package ?
C'est l'endroit le plus standard, les .a sont facultatifs et ne servent que lorsqu'on veut linker de manière statique, généralement on linke avec les .so (shared object)
Effectivement j'essaie de linker de manière static car j'essaie de faire un CGI-bin, et que lorsque je le compile en dynamique il ne trouve pas les mêmes version des .so sur le serveur.
Je suis débutant. Peut-être que linker en static n'est pas la bonne solution pour résoudre ce type de problème. (je n'ai pas tout ce qu'il faut sur le serveur pour compiler dessus)
Ou alors installe la libm.a pour linker statiquement
(généralement peu conseillé),
Pourquoi est-ce peu conseillé ?
Sinon, les libs statiques peuvent peut-être, suivant la distribution, être dans un package différent
Quel pourrait-être un nom classique un tel package ?
--
Vincent Lefevre
Dans l'article <e116n5$ht1$, Florent Monnier écrit:
Dans quel forum aurais-je dus poster ?
Celui concernant ta plateforme, le ld étant fourni avec l'OS, non?
Je crois que les discussions paralleles ont deja montre que le probleme etait l'edition statique.
Si tu veux de l'edition dynamique, il faut compiler et linker sur un systeme avec la plus vieille version supportee, les fournisseurs d'OS essayant alors que ca fonctionne assez bien (et voila pourquoi les developpeurs dans l'industrie ont generalement -- cad dans tous les endroits ou moi j'ai travaille -- de vieilles versions d'OS installees).
Je crois que les discussions paralleles ont deja montre que le
probleme etait l'edition statique.
Si tu veux de l'edition dynamique, il faut compiler et linker sur un
systeme avec la plus vieille version supportee, les fournisseurs d'OS
essayant alors que ca fonctionne assez bien (et voila pourquoi les
developpeurs dans l'industrie ont generalement -- cad dans tous les
endroits ou moi j'ai travaille -- de vieilles versions d'OS
installees).
A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Je crois que les discussions paralleles ont deja montre que le probleme etait l'edition statique.
Si tu veux de l'edition dynamique, il faut compiler et linker sur un systeme avec la plus vieille version supportee, les fournisseurs d'OS essayant alors que ca fonctionne assez bien (et voila pourquoi les developpeurs dans l'industrie ont generalement -- cad dans tous les endroits ou moi j'ai travaille -- de vieilles versions d'OS installees).