【问题标题】:Using bzlib in C on macOS Catalina - "ld: symbol(s) not found for architecture x86_64", "clang: error: linker command failed with exit code 1"在 macOS Catalina 上的 C 中使用 bzlib -“ld:未找到架构 x86_64 的符号”、“clang:错误:链接器命令失败,退出代码为 1”
【发布时间】:2021-10-08 04:59:31
【问题描述】:

我正在尝试在 macOS Catalina 上编译 C 程序。该程序将使用 bzip2 解压缩。我的代码包括这一行

#include <bzlib.h>

我正在尝试调用函数BZ2_bzBuffToBuffDecompress。但是,当我运行gcc myfile.c -o myfile.c.o 时,我收到以下错误:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1

我只是使用纯文本编辑器和 gcc,没有 IDE,也没有 CMake 文件。我怀疑我可能需要一个 CMake 文件,但我不确定如何继续。非常感谢您提供任何帮助!

【问题讨论】:

  • 你需要在bzip库中链接。 gcc myfile.c -o myfile -lbz2。该命令假定 lib 已安装到标准位置。此外,您正在编译最终的可执行文件,因此(按照严格的约定)它不应该有 .o 后缀。
  • 错误信息中没有列出未找到的符号吗?
  • @kaylum - 我再次尝试编译,将 -lbz2、-l bz2 和 -L /usr/bin -l bz2 添加到我的 gcc 命令中。现在我收到一堆行,上面写着“警告:忽略空字符 [-Wnull-character]”,然后是“致命错误:发出太多错误,现在停止 [-ferror-limit=]”。为什么会这样?我的代码在没有 bzip2 解压缩部分的情况下编译罚款,所以我认为这不是我的编码错误。
  • 没有minimal reproducible example 就无法判断。反正。这是一个不同的问题,你应该发布一个新问题。

标签: c macos gcc bzip2


【解决方案1】:

您需要在 bzip 库中进行链接。 gcc myfile.c -o myfile -lbz2。该命令假定 lib 已安装到标准位置。此外,您正在编译最终的可执行文件,因此(按照严格的约定)它不应该有 .o 后缀。

【讨论】:

  • 看起来我不小心用我的 run.sh 脚本覆盖了我的 C 文件,导致了 null 警告。出于某种原因,我还必须使用 sudo 来使链接器工作,但现在一切正常。感谢您的帮助,我已接受答案!
  • 我也会投票,但还没有足够的声誉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2020-02-07
相关资源
最近更新 更多