Identificarte

Versión Completa : ld no encuentra lib


Sponsored links
.




hell await
agosto 7, 2004, 11:01
Resulta ke yo como todos ( supongo ) tengo instaladas las glut en mi computador, pero cuando hago un programa que las invoke y compilo no me fuciona, ejem:

#include <GL/glut.h>

int main ( int argc, char *argv )
{
glutInit ( &argc, &argv );
return 0;
}
y compilo:
cc intento.c -lglut -LGL
y me dice ke el ld no encontro la libreria "-lglut"
mi ld.os.conf es:
root@setuid:~/aderesos/3d/ogrenew# cat /etc/ld.so.conf
/usr/local/lib
/usr/X11R6/lib
/usr/i486-slackware-linux/lib
/opt/kde/lib
/usr/lib/qt/lib

Segun entiendo, con incluir ahi el directorio donde tengo glut deberia bastar; el directorio donde tengo glut es:

root@setuid:~# ls -l /usr/X11R6/lib/libglut.so*
lrwxrwxrwx 1 root root 12 2004-08-07 11:50 /usr/X11R6/lib/libglut.so -> libglut.so.3*
lrwxrwxrwx 1 root root 14 2004-08-07 11:50 /usr/X11R6/lib/libglut.so.3 -> libglut.so.3.7*
-rwxr-xr-x 1 root root 215332 2003-08-20 16:24 /usr/X11R6/lib/libglut.so.3.7*o

como ven si ta incluido en mi ld.so.conf tons no se x ke no me toma -lglut.

Ya encontre una forma de solucionar el problema pero igual creo ke no es muy logico asi ke si alguien sabe algo sobre esto espero ke postee.

La forma de poder usar glut y ke me encuentre "-lglut" es:

cc intento.c -lGL -L/usr/X11R6/lib -lglut -lX11

primero debo indicarle el dirsearch con "-L" y luego le digo "-lglut" para ke lo tome. Igual me pasa con las X11, primero debo decirle la ubicacion de la libreria con "-L" y luego si "-lX11".

Espero aportes

hell await
agosto 8, 2004, 10:43
hola, aun no logro resolver el problema, esto pasa en slack 10.0, si alguien tiene el mismo problema le agradeceria ke lo comentara.
Aki pego algo ke puede ke sirva de info. Segun se esto confirma ke SI deberia funcionar "-lglut" pero bueno.

root@setuid:~# ldconfig -v

/usr/X11R6/lib:
libX11.so.6 -> libX11.so.6.2
libGLU.so.1 -> libGLU.so.1.3
libglut.so.3 -> libglut.so.3.7

eso es como lo mas relevante.

Espero aportes.

Krieg
agosto 9, 2004, 05:01
fernando@linx4 g $ cat g.c
#include <GL/glut.h>

int main ( int argc, char *argv )
{
glutInit ( &argc, &argv );
return 0;
}
fernando@linx4 g $ g++ g.c -l GL -l glut -l GLU -o g
fernando@linx4 g $ ls -l g
-rwxr-xr-x 1 fernando fernando 7573 Aug 9 11:59 g
fernando@linx4 g $ ldd g
libGL.so.1 => /usr/X11R6/lib/libGL.so.1 (0x40032000)
libglut.so.3 => /usr/lib/libglut.so.3 (0x4009b000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x400d0000)
libstdc++.so.5 => /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/libstdc++.so.5 (0x4016d000)
libm.so.6 => /lib/libm.so.6 (0x40223000)
libgcc_s.so.1 => /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/libgcc_s.so.1 (0x40245000)
libc.so.6 => /lib/libc.so.6 (0x4024f000)
libGLcore.so.1 => /usr/lib/opengl/nvidia/lib/libGLcore.so.1 (0x4037e000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40856000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40866000)
libdl.so.2 => /lib/libdl.so.2 (0x40946000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40949000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40953000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x4096a000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40980000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40988000)
fernando@linx4 g $

hell await
agosto 9, 2004, 05:11
Gracias krieg x tu aporte, ahora .. yo se hacer lo ke tu pusiste, mi problema es ke ( en slack 10.0 ) no me funciona el ld pues no me encuentra "-lglut" ni "-lGLU" aunke SI tenga configurado todo bien. Tons yo pregunto si se te ocurre alguna razon o donde puedo mirar para saber cual es el error??
x ke no me compila¡¡¡
ya vi el ld.so.conf ( como mensione antes ) y todo ta bien, tons me pregunt x ke debo colocar primero -L/usr/X11R6/lib para luego usar -lglut y -lGLU e incluso -lX11
Gracias señores.

hell await
agosto 9, 2004, 05:11
mas tarde ( x ke no toy en mi casa ) te pego la version del ld y del gcc que uso. gracias

Krieg
agosto 9, 2004, 05:29
Me imagino que ya hizo un ldconfig como root para actualizar los links.

Que le dice lo siguiente?



krieg@ciudadmomia g $ /sbin/ldconfig -p | grep glut
libglut.so.3 (libc6) => /usr/lib/libglut.so.3
libglut.so (libc6) => /usr/lib/libglut.so

hell await
agosto 9, 2004, 06:25
hola de nuevo
xD
sip, yo incluso edite de nuevo el ld.so.conf y luego le di ldconfig ( como root ) para actualizar y aun asi no me funciono jejeje aunke creo ke ya se x ke es el error pero aun no lo puedo testear x ke no toy en casa :(
x cierto, eso lo hice ayer y tambien intente lo que tu dices krieg y a mi no me devolvio nada. :(
en la madrugada ( posiblemente o muy cerca a ella ) coloco bien cada prueba para ke miren y si lo soluciono tons coloco el error.

hell await
agosto 9, 2004, 10:51
Hola de nuevo, krieg, ya hice lo ke mensionas y al igual ke a ti, a mi tb me sale bien las glut.so pero tons ke es lo ke ta mal???

Krieg
agosto 10, 2004, 04:32
Pues la verdad ya no tengo idea, el ultimo comando de ldconfig es para ver cual esta usando y si le muestra las correctas ni idea porque el compilador no las toma.

Solo para ver si se me ocurre algo mas postee aqui (copy/paste exacto) el resultado de:

ls -l `locate glut`
file `locate glut`
/sbin/ldconfig -p | grep glut/
g++ intento.c -l GL -l glut -l GLU -o intento
cd /usr/X11R6/lib/ ; ls -l *glut*

hell await
agosto 11, 2004, 12:48
hola. aki tan los resultados mmmm a mi no me parecen muy entusiastas pero veamos:
root@setuid:~# ls -l `locate glut`
warning: locate: could not open database: /var/lib/slocate/slocate.db: No such file or directory < y luego un ls al directorio >
root@setuid:~# file `locate glut`
warning: locate: could not open database: /var/lib/slocate/slocate.db: No such file or directory
root@setuid:~# /sbin/ldconfig -p | grep glut
libglut.so.3 (libc6) => /usr/X11R6/lib/libglut.so.3
libglut.so (libc6) => /usr/X11R6/lib/libglut.so
hellawait@setuid:~$ g++ intento.c -l GL -l glut -l GLU -o intento
/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: ld returned 1 exit status
hellawait@setuid:~$ cd /usr/X11R6/lib/ ; ls -l *glut*
lrwxrwxrwx 1 root root 12 2004-08-07 11:50 libglut.so -> libglut.so.3*
lrwxrwxrwx 1 root root 14 2004-08-07 11:50 libglut.so.3 -> libglut.so.3.7*
-rwxr-xr-x 1 root root 215332 2003-08-20 16:24 libglut.so.3.7*

ahi tan todos los resultados que a decir verdad me gustan menos que antes x(.
mientras sigo compilando con -L antes de -l xD jejeje, asi si funciona perfectamente y ejecuta tb perfectamente.

hell await
agosto 11, 2004, 01:02
ahora, para lo del locate pues te cuento que hice para tratar de solucionarlo y me dices si ta bien o mal:
luego de que me salio ese warning de ke no existe slocate.db yo ejecute ( como root ) updatedb
root@setuid:~# updatedb
warning: updatedb: could not open database: /var/lib/slocate/slocate.db: No such file or directory
y eso fue lo que me salio, tons entre al directorio /var/lib/slocate y le di ls y cp asi:
root@setuid:/var/lib/slocate# ls
slocate.db.tmp
root@setuid:/var/lib/slocate# cp slocate.db.tmp slocate.db
y x ultimo, nuevamente le di "updatedb" y ahora ta ejecutando.
y ahora repito los dos primeros comandos ke me dijiste:

root@setuid:~# ls -l `locate glut`
-rw-r--r-- 1 root root 10152 1998-08-07 19:18 /usr/X11R6/include/G
L/fglut.h
-rw-r--r-- 1 root root 20844 1998-08-07 19:18 /usr/X11R6/include/G
L/glut.h
lrwxrwxrwx 1 root root 12 2004-08-07 11:50 /usr/X11R6/lib/libgl
ut.so -> libglut.so.3*
lrwxrwxrwx 1 root root 14 2004-08-07 11:50 /usr/X11R6/lib/libgl
ut.so.3 -> libglut.so.3.7*
-rwxr-xr-x 1 root root 215332 2003-08-20 16:24 /usr/X11R6/lib/libgl
ut.so.3.7*
-r--r--r-- 1 root root 4483 2003-08-20 16:24 /usr/X11R6/man/man3/
glut.3.gz
-rw-r--r-- 1 root root 31498 1998-08-07 19:11 /usr/doc/glut-3.7/FA
Q.glut
-rw-r--r-- 1 root root 21092 2004-06-12 13:56 /usr/lib/gcc-lib/i48
6-slackware-linux/3.3.4/include/root/usr/X11R6/include/GL/glut.h
-rw-r--r-- 1 root root 5903 2004-08-07 11:50 /var/log/packages/gl
ut-3.7-i486-1
-rwxr-xr-x 1 root root 196 2004-08-07 11:50 /var/log/scripts/glu
t-3.7-i486-1*
-r--r--r-- 1 root root 4758 2004-08-07 11:30 /var/man/cat3/glut.3
.bz2
/usr/doc/glut-3.7:
total 128
-rw-r--r-- 1 root root 31498 1998-08-07 19:11 FAQ.glut

root@setuid:~# file `locate glut`
/var/man/cat3/glut.3.bz2: bzip2 compressed data, block size = 900k
/var/log/packages/glut-3.7-i486-1: Quake I or II world or extension
/var/log/scripts/glut-3.7-i486-1: ASCII text
/usr/doc/glut-3.7: directory
/usr/doc/glut-3.7/README.irix64bit: ASCII English text
/usr/doc/glut-3.7/NOTICE: ASCII English text
/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/include/root/usr/X11R6/include/GL/glut.h: ASCII C program text
/usr/X11R6/lib/libglut.so.3.7: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
/usr/X11R6/lib/libglut.so.3: symbolic link to `libglut.so.3.7'
/usr/X11R6/lib/libglut.so: symbolic link to `libglut.so.3'
/usr/X11R6/man/man3/glutMotionFunc.3.gz: gzip compressed data, was "glutMotionFunc.3", from Unix, max compression
/usr/X11R6/include/GL/fglut.h: ASCII English text
/usr/X11R6/include/GL/glut.h: ASCII C program text

ahi ta de nuevo los dos primeros con resultados mejores pero ke no solucionana nada ( x lo menos para mip ). omiti pegar todos las lineas del man en ambos comandos x obvias razones.

espero ayuda.

Krieg
agosto 11, 2004, 03:21
Otras posibilidades:

echo $LD_LIBRARY_PATH
env | grep LIB

(Tal vez alguna variable de ambiente sea el problema. Ya intento compilar con otro usuario?)

De todas formas ponga aqui todas las variables de ambiente para ver si veo algo (comando 'env').

hell await
agosto 11, 2004, 11:08
hola.
mmm lo de intentar compilar como otro usuario pues tengo actualmente dos usuarios en mi sistema, root y hellawait y con los dos sale el mismo problema :S.
respecto a la variable LD_LIBRARY_PATH, pues ni como hellawait ni como root esta definida, en la noche cuando me conecte a matrix te pego lo ke sale, es ke ahora toy en el trabajo xD
gras. x cierto, lo del slocate ta bien hecho?? es ke no sep

hell await
agosto 11, 2004, 11:15
hola
bueno he mirado un poco y voy a colocar algo, miremos si toy bien.

1 -- el ld.so.conf no interesa con el problema que tengo de compilacion, pues ese fichero lo ve es un "ld-linux < x asi decirle>" el cual se encarga de todo lo que tiene que ver con la ejecucion, buscar bibliotecas y cargarlas y ejecutar el programa como tal, asi ke dicho archivo solo interfiere en tiempo de ejecucion de una aplicacion, no en tiempo de compilacion ( ke es onde ta mi problema )

2 -- el ld ( de compilacion xD ) toma otro archivo para su configuracion y resulta que dicho archivo ta refundido no se donde ( aun lo toy buscando xD ), es un fichero de especificacion en donde le dicen donde estan las librerias para el linkeo ( y si mal no toy, las x defecto son /lib /usr/lib y otra mas, pero no /usr/X11R6/lib ).

3 -- Tons segun esto, cuando yo hago:
cc program.c -L/usr/X11R6/lib -lglut esta bien, pues primero debo especificarle donde buscar ( aparte de las x defecto ) y luego si le indico ke linkear de ese directorio ke le especifike con "-L", x tanto eso esta bien: primero le indico donde tan las .so o .a y luego ke linkear de eso ke encuentra ( -L -l combinados )

4 -- la duda es x ke (yo x lo menos ) no sabia que esto hacia falta, pues resulta que en otras distribuciones ( como mdk y fedora e incluso redhat creo ) las bibliotecas ( generalmente creo ) se ubican el esos directorios x defecto, haciendo ke el -L no sea necesario para linkear pues se encuentran las bibliotecas en los directorios. mmm y creo ke en gentoo ( sobre el cual tampoco tengo el problema ) hay es como un wrapper que permite encontrar estas bibliotecas a pesar de ke esten ubicadas en otro sitio.

tons, mi problema no es de configuracion ni del sistema, resulta un problema de ignorancia de mi parte, pero espero ke te resuelto ya xD.

soluciones:
1 -- hacer un wrapper en bash scripting para el gcc para que encuentre las bibliotecas ( poco elegante para mi )
2 -- encontrar el fichero de especificacion del ld ( de compilacion ) e introducirle los otros directorios para que me linkee de una.
3 -- seguir haciendolo como lo taba haciendo hasta ahora xD.

bueno, pues yo soy principiante en esto de linux asi ke no toy muy seguro de lo ke he posteado xD, asi ke preguntemosles a los ke saben ( krieg xD ) a ver si toy muy perdido o si toy serca???. comentarios???

hell await
agosto 12, 2004, 12:27
aki hay algo de la documentacion de gcc de gnu:
The directories searched include several standard system directories plus any that you specify with -L.
creo que esto se realciona con lo que dije de la combinacion -L -l
fuente:
http://gcc.gnu.org/onlinedocs/gcc-3...#Link%20Options
esto tambien sirve ( creo xD )
http://gcc.gnu.org/onlinedocs/gcc-3...2.html#Collect2

-Ldir
Add directory dir to the list of directories to be searched for -l.

hell await
agosto 12, 2004, 12:28
toy mirando y encontre esta otra solucion:
hellawait@setuid:~$ export LIBRARY_PATH=$LIBRARY_PATH:/usr/X11R6/lib
hellawait@setuid:~$ cc intento.c -lglut
hellawait@setuid:~$
mmmm para documentacion ( aunke supongo ke solo yo no sabia esto xD )
http://gcc.gnu.org/onlinedocs/gcc-3...ent%20Variables

hell await
agosto 12, 2004, 12:43
ahora pongo un otro link ke puede interesar, comentan algo sobre el ld-linux ( ejecucion ) que mensione arriba.
http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO-4.html
aki hay otro documento donde explican mas en detalle lo del
ld-linux que comente ( ejecucion ).
http://db.ilug-bom.org.in/Documentation/HOWTO/Program-Library-HOWTO/shared-libraries.html
segun leo, como lo comente antes, ld-linux es solo para tiempo de ejecucion y bus en el ld.so.conf x tanto no tenia que ver conmigo xD.
espero que esta doc le sea util a alguien mas diferente de mi, hay muchas cosas que no sabia.

hell await
agosto 12, 2004, 01:05
x cierto, el fichero del ld ( compilacion ) es specs ( find / -iname specs ), ahora tengo otro problema y es ke no lo entiendo :s jejeje, alguien sabe como reconfigurar este fichero?? o de alguna doc?? suertex

Krieg
agosto 12, 2004, 07:06
Si era una variable de ambiente. :)

Ufff este man ya esta volando, ud no instalo Linux hace poco?

(H)

hell await
agosto 12, 2004, 10:09
sip, hace una semana, instale mandrake 9, luego la 10 que es la que tengo actuamente en mi makina pero voy a reinstalar xD, gentoo 2004.1 pero este fin de semana re-instalo x ke pienso colocar gentoo 2004.2 y slack 10 xD que ya ta bien configurado con modem y todo xD.
mmmmm pero mmmmmm aun no puedo editar el fichero specs :S
y no toy volando, apenas y se algo.
Suertex