我在安装 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”命令生成的二进制代码就放在那里,这是错误的。 那么,我的猜测正确吗?如果是的话,我应该把它们放在哪里?如果不是,我该怎么办? 谢谢。
假设
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:gsl 的替代 cblas
使用
pkg-config --libs gsl
找出必要的链接器是什么,然后将它们链接起来。一个可选的事情是检查pkg-config --cflags gsl
。第二个为您提供包含文件的目录(如果它们未安装在默认的 /usr/include/
目录中)。如果你在那里安装了它,你可以忽略它。pkg-config --libs gsl
的输出将是-lgsl -lgslcblas -lm
gcc name.c -lgsl -lgslcblas -lm
Ubuntu 下的类似问题,最后,对于开发者:
sudo apt install libgsl-dev
用于生产:
sudo apt install libgsl27
我使用这个对我有帮助的tuto进行了测试。
对于法国人...请查看 page gsl sur la doc.ubuntu-fr.org