我正在为我的项目尝试不同的 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)
我不确定我在哪里犯了错误,但有很多可能性:
- 我需要从netlib 网站安装 BLAS/CBLAS 。我实际上尝试过这样做,但我可以设法从源代码构建库!如果有人可以制作自制配方,那就太好了。那么如果安装了原始 CBLAS 库,那么我需要了解用于编译的 gcc 标志以及如何链接库。
- 或者 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