免费注册 查看新帖 |

Chinaunix

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

makefile求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-04 19:45 |只看该作者 |倒序浏览
小弟现在遇到个问题,如下:
   主程序为 main.c ,调用函数A、B,A再调用函数C,那么makefile文件改如何写呢?
   我写的是
   out : main.o  A.o  B.o  C.o
           gcc  -o  out  main.o  A.o  B.o  C.o
     ..c.o:
           gcc  -c   $<
     
     不知道这样对不对?

   然后遇到的问题是:在main和A、B、C中都调用了头文件“complex.h”,这个是自己编写的复数运算头文件~
    运行make后显示的结果是:
   A.o : In function 'getAcomplex' :
     A.c : (.text + 0x0) : multip definition of 'getAcomplex'                     // getAcomplex 是complex.h中的一个函数
    main.o : main.c : (.text + 0x0) : first defined  here.
   .....
   .....
   collect 2 : ld 返回 1
   make : *** [out] 错误 1.

   按照我的理解他说的是函数getAcomplex重复定义了,但是如果删掉main或者A中的#include 'complex.h', 那么main或者A就无法编译成功
  希望达人告诉我这个问题该这么解决~

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
2 [报告]
发表于 2010-03-05 11:23 |只看该作者
不是Makefile的问题,是c编程的问题。

函数最好不要在头文件中定义,把getAcomplex的定义放在complex.c中,在complex.h中声明该函数。

论坛徽章:
0
3 [报告]
发表于 2010-03-07 13:51 |只看该作者
回复 2# EricFisher


     谢谢啊,按照你说的重新写了,果然弄好了,万分感谢!

论坛徽章:
0
4 [报告]
发表于 2010-03-11 15:38 |只看该作者
哇,又学了一招。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP