【问题标题】:CBLAS mac OS X Undefined symbols for architecture x86_64 errorCBLAS mac OS X 架构 x86_64 错误的未定义符号
【发布时间】:2016-11-19 18:05:06
【问题描述】:

我正在为我的项目尝试不同的 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 之间存在语法差异,我需要更改代码。

提前感谢您的帮助。

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

【问题讨论】:

    标签: c macos gcc blas cblas


    【解决方案1】:

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

    【讨论】:

    • 是的,没错。我已经发现了我可怕的错误。无论如何感谢您的回复。
    猜你喜欢
    • 2012-04-26
    • 2017-08-21
    • 1970-01-01
    • 2021-10-03
    • 2013-06-10
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多