运行环境:   OS, Archlinux  Compiler, gcc 4.6.0

C程序(为说明问题,其他不相关的文件不表): a.c (含main函数),b.c, b.h(有工具函数f())

问题:undefined reference to 'f'

卡了我好久,现在总结一下,Undefined reference to的错误一般有以下几种:

1)makefile写错

注意链接语句中一定要有b.c生成的b.o,在依赖关系一行和链接命令一行都要写,一共两个b.o不要漏

a: a.c b.o b.h

  $(CXX) $(CFLAGS) a.c b.o -o a -lm

这个错误解决方法是在网上学到的,不过检查发现我的makefile没有问题,原因是下面的错误

2)b.c没有#include "b.h"

尝试在a.c中去到#include "b.h",结果报告的错误变成了: 'f’在此作用域中尚未声明

头文件没有问题,再到b.c中看,原来有b.c中忘记#include “b.h”了。没有#include "b.h",b.o中没有f的符号,在链接中肯定找不到f函数的实现了。

3)如果还有其他常见原因,欢迎大家补充

posted on 2011-06-16 21:59  sepsky  阅读(662)  评论(0)    收藏  举报