Я оцениваю файлы C и C ++ для класса, и это назначение использует библиотеку GSL. Поскольку у меня нет прав root на моем компьютере, моя библиотека GSL установлена в моем домашнем каталоге, и поэтому мне нужно сообщить компиляторам и компоновщикам, где ее найти.
Это не проблема, когда я сам пишу программу, потому что я просто добавляю соответствующие флаги -L и -I в gcc.
Но когда я собираю файлы учеников, я не хочу редактировать каждый их make-файл. Вместо этого я хочу поместить соответствующие каталоги в переменную окружения, чтобы это происходило без проблем.
С этой целью я экспортировал следующие переменные в библиотеку или включил местоположения:
C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, LIBRARY_PATH и LD_LIBRARY_PATH
Но когда я компилирую проект студента, с
gcc -Wall -o MC_thread MC_thread.c -lgsl -lgslcblas -lpthread -lm
Я получаю следующую ошибку:
/usr/bin/ld: cannot find -lgsl
collect2: ld returned 1 exit status
make: *** [all] Error 1
Я использую gcc v 4.1.2. Я на самом деле не получаю ошибку, если я использую gcc v 4.4, но я понятия не имею, почему. Мой компоновщик:
ld -V
GNU ld version 2.17.50.0.6-12.el5 20061020.