2011-03-16 30 views
14

he creado un archivo de .so y ponerlo en la ubicación /opt/lib y ha añadido este camino a LD_LIBRARY_PATH ahora después de esto cuando intento compilar mi programa principal con el siguiente comando:/usr/bin/ld: no puede encontrar

g++ -Wall -I/home/alwin/Development/Calculator/ main.cpp -lcalc -o calculator 

me sale el siguiente error:

/usr/bin/ld: cannot find -lcalc 
collect2: ld returned 1 exit status 

¿Puede alguien ayudarme con esto. Esta es la primera vez que intento crear una biblioteca compartida. Creé la biblioteca compartida usando los bloques de código IDE

Respuesta

20

Agregue -L/opt/lib a los parámetros del compilador, esto hace que el compilador y el vinculador busquen esa ruta para libcalc.so en esa carpeta.

+0

Oh, sí lo he intentado también, todavía me dieron el mismo error :(vea el siguiente alwin @ alwin-laptop: ~/Desktop/CPPTest $ g ++ -Wall -I/home/alwin/Development/Calculator/-L/opt/lib main.cpp -libcalc.so -o calculadora /usr/bin/ld: no se puede encontrar -libcalc.so collect2: ld devuelto 1 estado de salida –

+2

@Jay es -lcalc, no -libcalc.so –

2

Debe agregar -L/opt/lib para indicar ld para buscar objetos compartidos.

+0

Como ya he mencionado en el comentario anterior, yo he añadido -L/opt/lib ¿hay algo más que me falta :( –

2

@Alwin Doss Debe proporcionar la opción -L antes -l. Hubieras hecho al revés, probablemente. Prueba esto :)

2

Al realizar la llamada a gcc que debería decir

g++ -Wall -I/home/alwin/Development/Calculator/ -L/opt/lib main.cpp -lcalc -o calculator 

not -libcalc.so 

Tengo un problema similar con las marcas generadas automáticamente.

Puede crear un enlace suave desde su directorio de compilación al directorio de la biblioteca. Luego la biblioteca se convierte en "local".

cd /compile/directory 

ln -s /path/to/libcalc.so libcalc.so 
Cuestiones relacionadas