免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2388 | 回复: 6
打印 上一主题 下一主题

[C] ubuntu8.10 makefile中宏定义的引用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-06 15:44 |只看该作者 |倒序浏览
刚开始学习写makefile文件,遇到了下面问题,请高手指教,不胜感激!
源代码如下:
  1 all: myapp
  2         CC = gcc
  3         INCLUDE = .
  4         CFLAGS = -g -Wall -ansi
  5 myapp: main.o 2.o 3.o
  6         $CC -o myapp main.o 2.o 3.o
  7 main.o : main.c a.h
  8         $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c
  9 2.0: 2.c a.h b.h
10         $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c
11 3.0: 3.c b.h c.h
12         $(CC) -I$(INLCUDE) $(CFLAGS) -c 3.c
命令:make -f makefile2 | tee -a err.txt得到如下信息:
cc -I  -c main.c
/tmp/cc4yaYqr.o: In function `main':
main.c.text+0x12): undefined reference to `function_two'
main.c.text+0x17): undefined reference to `function_three'
collect2: ld 返回 1
make: *** [main.o] 错误 1

为什么宏定义没有引用?不明白

论坛徽章:
0
2 [报告]
发表于 2009-05-06 15:59 |只看该作者
function_two
function_three

你这两个函数在哪定义的, 编译的时候包含这个定义函数的文件了吗?

论坛徽章:
0
3 [报告]
发表于 2009-05-06 16:37 |只看该作者
在这段代码中,a.h b.h c.h都是空的,而2.c 中定义的是function_two, 3.c中定义了function_three

论坛徽章:
0
4 [报告]
发表于 2009-05-06 18:11 |只看该作者
原帖由 lilyshuai 于 2009-5-6 15:44 发表
刚开始学习写makefile文件,遇到了下面问题,请高手指教,不胜感激!
源代码如下:
  1 all: myapp
  2         CC = gcc
  3         INCLUDE = .
  4         CFLAGS = -g -Wall -ansi
  5 myapp: main ...

链接错误啊,makefile 写错了
第九行看起来是2.0啊,上面确实2.o,改成2.o还有下面11行的3.o

论坛徽章:
0
5 [报告]
发表于 2009-05-06 21:43 |只看该作者
谢谢各位!除此之外还有一个问题,2。3,4行对宏的定义应该是顶格写的。

论坛徽章:
0
6 [报告]
发表于 2009-05-06 21:50 |只看该作者
-I/xxx/yyy
/xxx/yyy 存放你定义的头文件的目录

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2009-05-06 22:15 |只看该作者
2         CC = gcc
  3         INCLUDE = .
  4         CFLAGS = -g -Wall -ansi
这个写到前面,不要tab,这个相当于定义
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP