c - 在 gcc 上编译时目标文件出错

标签 c gcc linker

我有几个 .h 文件,它们包含在 .c 文件的开头。

当我使用 -c 标志编译 .c 文件时:

gcc -Wall -c parserv9-3.c

没有错误,也没有任何警告。

但是,当我删除 -c 标志时,它会在临时对象文件中给出错误。

也就是说,当我运行时

gcc -Wall parserv9-3.c

我收到以下错误:

/tmp/cc5IWBiC.o: In function `parseInputSourceCode':
parserv9-3.c:(.text+0x204b): undefined reference to `getStream'
collect2: error: ld returned 1 exit status

有什么问题吗?任何帮助将不胜感激。

最佳答案

-c 标志表示仅编译,不链接。当您删除它时 - gcc 还将该对象链接到可执行文件(而是调用 ld 命令),然后它必须找到所有引用的外部符号。

在您的情况下,符号getStream不存在。它可能位于不同的 .c 文件中。

关于c - 在 gcc 上编译时目标文件出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404246/

相关文章:

gcc - 在具有 32 位用户空间的 64 位系统上,Configure 无法检测到正确的 ld

c++ - PfCreateInterface 返回错误 120(未实现)

c - 测量 int 数组的元组数量

在C中将包含本地时间的字符串转换为UTC

我可以在 C 中执行类似 #define ARRAY(size) char[##size##] 的操作吗?

android - ARM 警告 : swp{b} use is deprecated for this architecture

c++ - cmake - 全局链接器标志设置(针对目录中的所有目标)

winapi - 为什么我的 PE 文件无效?

计算字符串中出现次数最多的字符

c - 尝试从结构中检索 U32 时程序崩溃