Как ПРАВИЛЬНО установить библиотеку gsl в Linux? - PullRequest
4 голосов
/ 12 августа 2011

У меня возникла проблема при установке Научной библиотеки GNU (gsl). Я поместил пакет на рабочий стол и выполнил операции "./configure", "make" и "sudo make install" в соответствии с прилагаемым документом. Я проверил каталог / usr / local / include, там есть только что созданная папка "gsl". Но когда я попытался использовать функции, предоставляемые библиотекой, произошла ошибка «неопределенная ссылка на« gsl_sf_beta_inc »». Вот мой код.

#include <stdio.h>
#include <gsl/gsl_sf_gamma.h>

int main (void)
{
    double a = 20;
    double b = 1000;
    double x = 0.5;
    double result = gsl_sf_beta_inc(a, b, x);
    printf("%f/d", result);
    return 0;
}

Я чувствовал, что проблема может быть вызвана тем фактом, что я поместил пакет на рабочий стол, поэтому туда попадает двоичный код, сгенерированный командой make, что неправильно. Итак, моя догадка верна? Если это так, где я должен их поставить? Если это не так, что мне делать? Спасибо.

Ответы [ 2 ]

11 голосов
/ 12 августа 2011

Вам необходимо связать библиотеку, если make install был успешным.

В документации gsl сказано, что это должно работать
(обратите внимание на две необходимые опции связывания для работы gsl: -lgsl -lgslcblas)

gcc -I/usr/local/include -L/usr/local/lib main.c -o main -lgsl -lgslcblas -lm

Альтернативный "cblas" вместо cblas gsl также возможен согласно:

2 голосов
/ 12 сентября 2015

Используйте pkg-config --libs gsl, чтобы узнать, какими должны быть необходимые линкеры, а затем просто свяжите их. Необязательной вещью будет проверка pkg-config --cflags gsl. Второй дает вам каталог включаемых файлов, если они не установлены в каталоге по умолчанию /usr/include/. Если вы установили его там, вы можете просто проигнорировать это.
Выход pkg-config --libs gsl будет
-lgsl -lgslcblas -lm
Это означает, что эти три должны быть связаны. Таким образом, при компиляции вашей программы вы делаете это,
gcc name.c -lgsl -lgslcblas -lm

...