GNU GSL BLAS库,未定义的符号

时间:2014-05-01 17:24:21

标签: c xcode macos linker gsl

有没有人可以简单地告诉我如何安装GSL库,以便它可以在Mac上使用XCode(5.1)(Mavericks,10.9)?我一直收到这个错误:

Undefined symbols for architecture x86_64:
"_gsl_matrix_add", referenced from:
  _myProject in main.o

我最初在/Library/gsl-1.16中安装了GSL 1.16 我完成了整个./configure,make和make install

我试图修复的事情:

1)进入"构建设置"在XCode中添加" /Library/gsl-1.16" 到库和标题搜索路径

2)从... usr / include路径(...是XCode正在使用的SDK(MacOSX 10.9)位置)创建符号链接到库路径。

3)添加" -lgsl"参加#34;在发布会上传递的论点"我项目计划的一部分

4)添加" -Wall -I / Library / include"参加#34;在发布会上传递的论点"我项目计划的一部分

没有任何效果。 Xcode报告它可以找到标题,但它不能引用与标题文件相关的方法。真的很有趣。我不知道,我已经完成了我能想到的一切和谷歌。

1 个答案:

答案 0 :(得分:0)

根据您的描述,很难确定您是否正确设置了构建设置。我使用macports安装了GSL,并且不确定如果直接从源代码安装它会是什么样子。但我相信您需要确定make install安装GSL库和标头的位置,因为它们通常安装在不同的路径中,而不是您运行的路径make install

由于make install通常会将标头安装到/usr/local/include,将库安装到/usr/local/lib,我想您可能会设置错误的库路径。假设你发现你的GSL库在/usr/local/lib(通常他们应该),你只需要做两件事之一(而不是两者):

  1. 将图书馆搜索路径更改为/usr/local/lib。 (和/usr/local/include的标题搜索路径一样)
  2. 将编译器参数更改为-Wall -I/usr/local/include -L/usr/local/lib。 (最后两个参数以大写i和大写L开头。)
  3. 以下是我如何使用macport安装GSL并在Xcode中设置它来运行矩阵的过程:

    1. 如果您还没有安装macport,请安装它。请参阅https://www.macports.org/install.php
    2. 在终端中,键入sudo port install gsl,然后喝几杯咖啡。
    3. 默认情况下,macports将图书馆安装到/opt/local/lib,将标头安装到/opt/local/include。因此,在Xcode中创建C ++项目后,转到构建设置,添加以下三个设置:
      • 图书馆搜索路径:/opt/local/lib
      • 标题搜索路径:/opt/local/include
      • 其他链接器标记:-lgsl(取决于您要执行的操作,您可能还需要添加-lgsl -lgslcblas和其他标记。)
    4. 现在它正常运行。包含<gsl/gsl_matrix.h>gsl_matrix已准备就绪。