【问题标题】:Trouble compiling c gsl library from max terminal从 max 终端编译 c gsl 库时遇到问题
【发布时间】:2017-06-29 15:05:17
【问题描述】:

我有一个 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 机器上成功编译。我想将 gsl 库用于我的 mac 上的其他应用程序。所以我首先使用自制软件安装了 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 脚本。我的猜测是它没有正确链接,但我不确定我需要做什么来修复它。谢谢

【问题讨论】:

    标签: c macos gcc terminal gsl


    【解决方案1】:

    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
    

    【讨论】:

    • 所以我得到以下错误:找不到-lgsl clang的库:错误:链接器命令失败,退出代码为1(使用-v查看调用)
    • 告诉你的编译器你的库在哪里...brew list gsl然后将库目录附加到你的链接行-L/usr/local/Cellar/gsl/1.16/lib/
    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多