6

我在安装 GNU Scientific Library (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”命令生成的二进制代码到那里,这是错误的。那么,我的猜测正确吗?如果是,我应该把它们放在哪里?如果不是,我该怎么办?谢谢。

4

2 回答 2

12

make install假设成功,您需要链接库。

gsl的文档说这应该可以工作
(请注意 gsl 工作的两个必要链接选项:“-lgsl -lgslcblas”):

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

替代“cblas”而不是 gsl 的 cblas 也是可能的:alternate cblas for gsl

于 2011-08-11T23:04:06.677 回答
3

用于pkg-config --libs gsl找出必要的链接器是什么,然后将它们链接起来。一个可选的事情是检查pkg-config --cflags gsl. 如果包含文件未安装在默认目录中,则第二个为您提供包含文件的/usr/include/目录。如果你在那里安装了它,你可以忽略它。
的输出pkg-config --libs gsl将是
-lgsl -lgslcblas -lm
这意味着这三个必须链接。因此,在编译程序时,您可以这样做,
gcc name.c -lgsl -lgslcblas -lm

于 2015-09-12T08:08:00.017 回答