0

我正在为我的项目尝试不同的 C 线性代数库,现在我想学习 BLAS (CBLAS)。我正在尝试按照此处的教程进行操作。我意识到 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 网站安装 BLAS/CBLAS 。我实际上尝试过这样做,但我可以设法从源代码构建库!如果有人可以制作自制配方,那就太好了。那么如果安装了原始 CBLAS 库,那么我需要了解用于编译的 gcc 标志以及如何链接库。
  2. 或者 netlib 中的原始 CBLAS 与 xcode 中内置的 CBLAS 之间存在语法差异,我需要更改代码。

提前感谢您的帮助。

PS 我正在尝试从我提到的页面编译代码 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
4

1 回答 1

0

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

于 2016-11-19T22:09:22.017 回答