【发布时间】: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 就无法判断。反正。这是一个不同的问题,你应该发布一个新问题。