我在安装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”命令生成的二进制代码就到了那里,这是错误的。 那么,我猜是正确的吗?如果是的话,我应该把它们放在哪里?如果不是,我该怎么办? 感谢。
答案 0 :(得分:11)
假设make install
成功,您需要链接库。
gsl's documentation说这应该有效 (注意gsl工作的两个必要的链接选项:“ - llsl -lgslcblas”):
gcc -I/usr/local/include -L/usr/local/lib main.c -o main -lgsl -lgslcblas -lm
替代“cblas”而不是gsl的cblas也可以按照:alternate cblas for gsl
答案 1 :(得分:2)
使用pkg-config --libs gsl
找出必要的链接器,然后将它们链接起来。可选的是检查pkg-config --cflags gsl
。第二个为您提供包含文件的目录(如果它们未安装在默认的/usr/include/
目录中)。如果你在那里安装它,你可以忽略它。
pkg-config --libs gsl
的输出为
-lgsl -lgslcblas -lm
这意味着必须将这三者联系起来。因此,在编译程序时,您可以通过以下方式执行此操作
gcc name.c -lgsl -lgslcblas -lm