0

我有几个 .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

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

4

1 回答 1

1

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

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

于 2013-03-14T08:22:48.903 回答