Estoy clasificando archivos C y C++ para una clase, y esta asignación usa la biblioteca GSL. Como no tengo el permiso de root en mi computadora, mi biblioteca GSL está instalada en mi directorio de inicio y, por lo tanto, debo indicar a los compiladores y a los vinculadores dónde encontrarla.Diciendo ld dónde buscar directorios a través de una variable de entorno
Esto no es un problema cuando escribo un programa, porque simplemente agrego las banderas apropiadas -L e -I a gcc.
Pero cuando estoy compilando archivos de estudiantes, no quiero editar cada uno de sus archivos MAKE. En cambio, quiero poner los directorios apropiados en una variable de entorno, para que ocurra sin problemas.
Con este fin, me ha exportado las siguientes variables con la biblioteca o incluyen lugares: C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, LIBRARY_PATH y LD_LIBRARY_PATH
Pero cuando compilo proyecto de un estudiante, con
gcc -Wall -o MC_thread MC_thread.c -lgsl -lgslcblas -lpthread -lm
Me sale el siguiente error:
/usr/bin/ld: cannot find -lgsl
collect2: ld returned 1 exit status
make: *** [all] Error 1
Estoy usando gcc v 4.1.2. De hecho, no obtengo el error si uso gcc v 4.4, pero no tengo idea de por qué. Mi enlazador es:
ld -V
GNU ld version 2.17.50.0.6-12.el5 20061020.
Prueba man ld y man ld.so para entornos vars que utilizan. LD_LIBRARY_PATH podría funcionar. – Eugene
Creo que LD_LIBRARY_PATH solo es usado por ld.so, no por ld. Dado que es un error en tiempo de compilación, no un error en tiempo de ejecución, me gustaría centrarme en por qué LIBRARY_PATH no funciona. Dos cosas que verificaría, ¿el archivo de la biblioteca tiene el nombre correcto y es LIBRARY_PATH actualmente definido en el entorno de ejecución de gcc? –
Intente ejecutar gcc con la opción '-v' y publique la invocación completa de ld desde la salida. –