编译时找不到 gsl 头文件

编译时找不到 gsl 头文件

我对 Linux 完全陌生。我刚刚在一台旧电脑上安装了 Ubuntu 16.04,我正在尝试为一个项目安装 gsl 库。我运行了

sudo apt install libgsl2, libgsl0-dev, libgsl-dev, gsl-bin

然后我gsltest.c用代码制作了一个测试程序

#include <stdio.h>
#include <gsl_rng.h>
#include <gsl_randist.h>

int main (int argc, char *argv[])
{
  /* set up GSL RNG */
  gsl_rng *r = gsl_rng_alloc(gsl_rng_mt19937);
  /* end of GSL setup */

  int i,n;
  double gauss,gamma;  

  n=atoi(argv[1]);
  for (i=0;i<n;i++)
    {
      gauss=gsl_ran_gaussian(r,2.0);
      gamma=gsl_ran_gamma(r,2.0,3.0);
      printf("%2.4f %2.4f\n", gauss,gamma);
    }
  return(0);
}

我从互联网上的某个地方复制了代码,然后执行以下命令

gcc -Wall -I/home/myname/gsl/include -c gsltest.c

这会引发错误:

gsltest.c:2:21: fatal error: gsl_rng.h: No such file or directory compilation terminated.

我究竟做错了什么?

答案1

如果你安装了libgsl-dev,那么头文件应该在/usr/include/gsl/,因此如果你指定,编译器应该能够找到它们-I/usr/include/gsl

或者-I如果将 #includes 更改为#include <gsl/gsl_randist.h>etc,则可以完全省略该指令。

或者,您可能需要考虑使用pkg-config来自动定位标题,例如

gcc -Wall `pkg-config --cflags gsl` -c gsltest.c

相关内容