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

时间:2013-03-14 08:20:56

标签: 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

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

1 个答案:

答案 0 :(得分:1)

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

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