免费注册 查看新帖 |

Chinaunix

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

linux makefile的编写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-09 21:37 |只看该作者 |倒序浏览
今天学校linux的makefile文件的编写时遇到如下问题:
要写一个包含两个文件的makefile文件,两个文件分别如下:
func.h文件:
#include<stdio.h>
int add(int m)
{
        int i;
        int sum;
        for(i=0;i<m;i++)
        {
                sum+=i;
                printf("add result is %d!\n",sum);
        }
}
hello.c文件如下:
#include<stdio.h>
#include"func.h"
void fun1(int a)
{
        int i;
        int j=a;
        int sum=0;
        for(i=0;i<j;i++)
        {
                sum+=i;
                printf("sum is %d.\n",sum);
        }
}
int main()
{
        printf("this is the first function !\n");
        fun1(10);
        add(10);
        return 0;
}
makefile文件如下:
hello:hello.o func.o
          gcc hello.o func.o -o hello
hello.o:hell.c
          gcc -c hello.o
func.o:func.h
          gcc -c func.h
其中makefile中gcc前面都是用table键生成的空格。总是报错。请哪位高手指点。谢谢!!!

论坛徽章:
0
2 [报告]
发表于 2011-07-09 22:11 |只看该作者
回复 1# liuwenping4261
楼主直接用
  1. gcc hello.c fun.c -o hello
复制代码
正常吗?

然后再看是不是Makefile的问题.

把出错信息,截个图贴出来看看哈.

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2011-07-09 22:30 |只看该作者
第一,是hello.c而不是hell.c哦。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
4 [报告]
发表于 2011-07-09 22:32 |只看该作者
  1. hello:hello.o func.o
  2.         gcc hello.o  -o hello
  3. hello.o:hello.c
  4.         gcc -c hello.o
  5. func.o:func.h
  6.         gcc -c func.h
复制代码
正确的make文如上。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2011-07-09 22:33 |只看该作者
  1. gcc -c func.h
复制代码
是不可能生产func.o的。谢谢。

论坛徽章:
0
6 [报告]
发表于 2011-07-09 23:30 |只看该作者
楼上说的对。 刚才都没仔细看.
fun.h不是编译单元. 里面不能定义函数啊.
理论上有个fun.c才对啊.

论坛徽章:
0
7 [报告]
发表于 2011-07-10 20:07 |只看该作者
回复 5# renxiao2003


    报错就是说不能产生func.o我想知道怎么写保函两个c文件的makefile呢?

论坛徽章:
0
8 [报告]
发表于 2011-07-10 20:08 |只看该作者
回复 6# bbxyard


    写个func.c是不是要有个main函数啊?那样编译的时候就会提示说有连个main函数了。

论坛徽章:
0
9 [报告]
发表于 2011-07-10 20:09 |只看该作者
回复 3# renxiao2003


    这个是笔误。源文件里没有这个错误。对不起!!!

论坛徽章:
0
10 [报告]
发表于 2011-07-10 20:24 |只看该作者
回复 8# liuwenping4261
main函数,一个工程中(一堆.c中),只要有一个定义了就行了.
如果编译成共享库.so .a; main函数是不需要的.

Makefile工程,见附件.
hello.zip (709 Bytes, 下载次数: 76)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP