QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1541|回复: 22

询问一下:简单的makefile是这样做么?

[复制链接]
发表于 2004-5-21 17:00:21 | 显示全部楼层 |阅读模式
简单的makefile和要用main分开的源文件把函数实现认识linking

创建文件test_main.c
includ "test.h"
int main(){
main sum()

}

创建文件test_sum.c
includ "test.h"
int main(){
sum(1,2);
return 0;
}

创建文件test.h
includ"stdio.h"
int sum(int,int){
                a+b
}
然后
gcc -c test_sum.c
gcc -o test test_main.c test_sum.o

可是我的这个程序不能入我所愿,还有一个,这个makefile的具体步骤怎么实现?

谢谢各位大哥大姐赐教
 楼主| 发表于 2004-5-21 17:30:24 | 显示全部楼层
没有人肯帮忙吗?
回复

使用道具 举报

发表于 2004-5-21 20:30:39 | 显示全部楼层
一个程序能有两个main()?
回复

使用道具 举报

 楼主| 发表于 2004-5-21 22:25:45 | 显示全部楼层
我知道在同一个文件里不能有2个main但是不同文件我没试验过,这件事情比较着急,可我现在没有linux下的c\c++的环境,我不能找到我的错误,希望斑竹大人帮我修改一下,给小弟指点一下迷津~~
回复

使用道具 举报

发表于 2004-5-21 22:30:58 | 显示全部楼层
楼上的,你如果初学makefile,建议你用automake来生成,这样不易出错,具体的文章你用搜索搜一下,里面有很详细的例子,一步一步教你!
回复

使用道具 举报

发表于 2004-5-21 22:31:51 | 显示全部楼层
不管几个文件,一个程序只有一个main()的呀
你的程序想干什么的?
回复

使用道具 举报

 楼主| 发表于 2004-5-21 23:29:58 | 显示全部楼层
我知道该如何automake,我察看了很多网站了~
谢谢姐姐。

我是想编写这样一个程序:
1、先编写一个加法源文件,在这个里有一个数字输入部分。再编写一个文件,里面的函数负责计算和打印答案,最后写一个文件里面直接调用以上的两个文件。
2、通过makefile编译一个可执行文件make,可以通过./make来直接运行。
3、运行结果是输入./make会要求你输入2个数字(0 <x<999)然后告诉你这两个数字和。

我觉得很简单,可是一边起来就不知道怎么干了:(
斑竹大人帮帮小弟吧~
回复

使用道具 举报

发表于 2004-5-21 23:56:04 | 显示全部楼层
[code:1]
test_sum.c:
int sum(int a,int b)
{
    return a+b;
}

test_sum.h
int sum(int,int);

test_main.c:
#include "test_sum.h"
main()
{
    int a,b,c;
    ...
    c=sum(a,b);
    ...
}
[/code:1]
Makefile:
all: sum
sum: test_sum.o test_main.o
         gcc -o sum test_sum.o test_main.o
test_sum.o: test_sum.c test_sum.h
         gcc -c test_sum.o
test_main.o: test_main.c
         gcc -c test_main.c

没测试,自己试试吧,我建议你先补补c吧,这么简单的东西都。。。。。
回复

使用道具 举报

发表于 2004-5-22 00:01:28 | 显示全部楼层
我知道该如何automake,我察看了很多网站了~
谢谢姐姐。

  我没有那么老吧!呜呜呜!!!!
回复

使用道具 举报

发表于 2004-5-22 00:10:26 | 显示全部楼层
你知道人家多大呀,又没叫你阿姨
回复

使用道具 举报

发表于 2004-5-22 02:02:36 | 显示全部楼层
这里是另一种简捷的写法:
EXENAME = sum
CC = gcc
objs = test_sum.o test_main.o
all : $(EXENAME)
.c.o:
       $(CC) -c  $<
$(EXENAME): $(OBJS)
       $(CC) -o $(EXENAME) $(OBJS)

在项目中的文件很多及需要许多外联头文件和库里更是显得此Makefile非常精练。
回复

使用道具 举报

发表于 2004-5-22 02:05:20 | 显示全部楼层
当然,$(CC)之前要用TAB作间隔,我刚才在些贴出不用"code"之类的东东所以代码全为左对齐。
回复

使用道具 举报

 楼主| 发表于 2004-5-22 10:59:22 | 显示全部楼层
哇~~~~~~~~~~~~~~~~~~~~~~~~~~

谢谢斑竹大人和各位大哥大姐~

我认为能者为师,昔年孔子也也有年龄比自己小的老师阿:)tracystar我不是把你叫老了~

果然。3人行必有我师~~~

独孤在这里再次谢谢大家了~~~~~

以后我希望这里是我另一个家~
回复

使用道具 举报

 楼主| 发表于 2004-5-22 11:02:22 | 显示全部楼层
斑竹大人说得极是,我以后一定好好学习c,希望大家不要嫌弃在下才疏学浅
回复

使用道具 举报

 楼主| 发表于 2004-5-22 18:50:57 | 显示全部楼层
对不起问一下,还要问一下~~

类似的操作用java是如何实现的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 06:36 , Processed in 0.042508 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表