CBLAS mac OS X架构x86_64错误的未定义符号

时间:2016-11-19 18:05:06

标签: c macos gcc blas cblas

我正在为我的项目尝试不同的C线性代数库,现在我想学习BLAS(CBLAS)。我正在尝试按照教程here。我意识到cblas已经内置在xcode中并添加了标志

gcc foo.c -framework Accelerate

gcc foo.c -lcblas

我可以删除之前的大部分错误。但是最后一个错误是我在互联网上找不到的。

Undefined symbols for architecture x86_64:
  "_printVector", referenced from:
      _main in blas1C-63e43d.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我不确定我犯了哪个错误,但有很多可能性:

  1. 我需要从netlib website安装BLAS / CBLAS。我实际上试图这样做,但我可以设法从源代码构建库!如果有人能制作一个自制的公式,那就太好了。那么如果安装了原始的CBLAS库,那么我需要了解用于编译的gcc标志以及如何链接库。
  2. 或者netlib中的原始CBLAS与xcode中内置的CBLAS之间存在语法差异,我需要更改代码。
  3. 感谢你的帮助。

    P.S。我正在尝试从我提到的页面编译代码blas1C.c,blaio.c,blaio.h。

    编辑1:哦,我的!我才意识到我犯了一个可怕的错误。缺少的printVector函数不是CBLAS的一部分,而是博客作者的功能。我唯一要做的就是编译blaio.c文件。所以正确的gcc命令应该是

    gcc blas1C.c blaio.c -lcblas
    

    gcc blac1C.c blaio.c -framework Accelerate
    

1 个答案:

答案 0 :(得分:0)

该功能来自网站中的blasio.c,并在blasio.h中声明 您需要构建blasio并链接到它