seemuch seemuch - 10 months ago 69
Linux Question

How to CORRECTLY install gsl library in Linux?

I got a problem while installing the GNU Scientific Library (gsl).
I put the package on my desktop, and did "./configure", "make", and "sudo make install", according to the document included. I checked the /usr/local/include directory, there is a newly created "gsl" folder in there. But When I tried to use the functions provided by the library, the "undefined reference to 'gsl_sf_beta_inc'" error occurred. Here is my code.

#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;

I sensed that the problem might be caused by the fact I put the package on the desktop, so the binary code generated by the "make" command goes there, which is wrong.
So, is my guess correct? If it is, where should I put them? If it is not, what should I do?

Answer Source

You need to link the library, assuming the make install was successful.

The gsl's documentation says this should work
(note the two necessary linking options for gsl to work: "-lgsl -lgslcblas"):

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

Alternative "cblas" instead of gsl's cblas is also possible as per: alternate cblas for gsl