Mac OSX 上的 C++ 编译错误:找不到 gsl 库

计算科学 C++ gsl
2021-12-20 04:39:39

我是 C++ 编程的新手。这似乎是一个常见错误,但我似乎无法解决:我正在尝试使用该gsl库,但没有运气:/usr/bin/g++例如,用于编译以下最小(应该是)工作示例(可在此处获得)。

#include <iostream>
#include <gsl/gsl_linalg.h>

int main() {
    cout << "This is a test" << endl;

    double A_data[] = {
        0.57092943, 0.00313503, 0.88069151, 0.39626474,
        0.33336008, 0.01876333, 0.12228647, 0.40085702,
        0.55534451, 0.54090141, 0.85848041, 0.62154911,
        0.64111484, 0.8892682 , 0.58922332, 0.32858322
    };
 
    double b_data[] = {
        1.5426693 , 0.74961678, 2.21431998, 2.14989419
    };

    // Print the values of A and b using GSL print functions
     std::cout << "A = \n";
     gsl_matrix_fprintf (stdout, &A.matrix, "%lf");

    return 0;
}

产量:

fatal error: 'gsl/gsl_linalg.h' file not found

我的问题是:如何正确声明 gsl 库的路径(在 MacOSX 上)?

我已经尝试过,但没有成功(或没有确定我做错了什么)

  • 按照此处的建议重新定义路径
  • 编译使用:g++首先,然后使用g++ -std=c++11 path/to/script.cpp `pkg-config --libs gsl` (我尝试运行的脚本中使用的命令)和g++ -Wall -I/opt/homebrew/Cellar/gsl/2.7.1/include -c path/to/script.cpp(如建议的here)。

一些可能有用的附加信息:

  • 我在 Mac 上,OSX Monterey 12.1,带有 M1 芯片
  • 我正在使用 VS 代码,但我也在 Xcode 中尝试过,但没有成功
  • 我使用自制软件安装了 gsl 库(所以库被放置在/opt/homebrew/Cellar/gsl/2.7.1地址而不是/usr/local/include/gsl)。
  • 我曾经brew update-reset回到原来的设置,以防我做错了
1个回答

请记住,pkg-config 使用反引号,`,而不是'

您说“...我使用自制软件安装了 gsl 库(因此该库被放置在 /opt/homebrew/Cellar/gsl/ 2.7.1 ”,但您使用的是“g++ -Wall -I/opt/homebrew /Cellar/gsl/ 2.7 /include -c path/to/script.cpp"