从 max 终端编译 c gsl 库时遇到问题

Trouble compiling c gsl library from max terminal

我有一个 C 脚本

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>

int main(void)
{
    const gsl_rng_type * T;
    gsl_rng * r;
    int i;
    double a,b;
    double num;
    a=10;
    b=7.2;

    gsl_rng_env_setup();

    T=gsl_rng_default;
    r=gsl_rng_alloc (T);
    for(i=0; i<10; i++)
    {
        num = gsl_ran_gamma(r,a,b);
        printf("%.8f \n",num);
    }


    gsl_rng_free(r);
    return 0;
}

我已经在 linux machine 上成功编译了。我想在 mac 上将 gsl 库用于其他应用程序。所以我首先使用 homebrew 安装了 gsl,这似乎是成功的。为了确保一切正常,我尝试编译 运行 这个脚本如下

[ACC-259-imac:GDSC Gene Expression Modeling jmannhei$ gcc -Wall gamma.c -o gamma.out -lm -lgsl -lgslcblas

导致以下输出

gamma.c:5:10: fatal error: 'gsl/gsl_rng.h' file not found
#include <gsl/gsl_rng.h>
         ^
1 error generated.

这正是我在 Linux 上编译它的方式,所以我不确定有什么问题,因为我以前在 mac 上从终端使用这种格式编译过 c 脚本。我的猜测是它没有正确链接,但我不确定我需要做什么来修复它。谢谢

brew list gsllocate gsl/gsl_rng.h 找到你的头文件目录,然后告诉你的编译器头文件在哪里。我需要以下内容,例如,

gcc -Wall -I/usr/local/Cellar/gsl/1.16/include/ gamma.c -o gamma.out -lm -lgsl -lgslcblas