- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Makefile编写实验
Makefile编写实验
【实验目的】
了解Makefile的基本概念和基本结构.
初步掌握编写简单Makefile的方法.
了解递归Make的编译过程
初步掌握利用GNU Make编译应用程序的方法
【实验步骤】
使用命令行的方式手动编译程序方法
利用文本编辑器创建hello.c文件
手动编译hello应用程序,在hello.c的目录的终端下输入:
[root@local]$ gcc –c hello.c
[root@local]$gcc hello.o –o hello
通过ls命令查看当前目录下是否生成源代码hello.c的object文件hello.o和可执行文件hello,运行可执行文件hello。查看一下运行结果。
[root@local]$./hello
修改hello.c文件,重新手动编译应用程序。
删除hello.o和hello文件
[root@local]$rm –f hello.o
[root@local]$rm –f hello利用 GNU make 自动编译应用程序方法
利用文本编辑器创建一个makefile文件,并将其保存到与hello.c相同的目录下。
先后执行如下命令:
[root@local]$make
[root@local]$ls
[root@local]$./hello
查看并记录所生成的文件和运行的结果。
执行make clean命令:
[root@local]$make clean
修改hello.c文件,重复第2、3步操作,查看并记录所生成的文件和运行结果。
重新编辑makefile文件(斜黑体表示修改部分)
重复第2,3步操作,查看并记录所生成的文件和运行的结果。比较这两种操作,写出你的结论。同时指出$^ 、$@、$在上述Makefile中的含义。
多个.c文件的编译
创建文件hello1.c、hello2.c、hello.h和makefile
先后执行如下命令
[root@local]$make
[root@local]$ls
[root@local]$./hello
查看并记录所生成的文件和运行的结果, 写出你的结论。
1
//hello.c
//written by Emdoor
#include stdio.h
int main()
{
printf(Welcome Emdoor!\n);
return 1;
}
# makefile test for hello program
#written by Emdoor
CC=gcc
CFLAGS=
hello: hello.o
$(CC) $(CFLAGS) hello.o –o hello
hello.o: hello.c
$(CC) $(CFLAGS) –c hello.c –o hello.o
clean:
rm –rf hello *.o
# makefile test for hello program
#written by Emdoor
CC=gcc
CFLAGS=
OBJS=hello.o
all: hello
hello: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
hello.o: hello.c
$(CC) $(CFLAGS) –c $ -o $@
clean:
rm –rf hello *.o
//hello1.c
//written by Emdoor
#include stdio.h
int main()
{
printf(Welcome Emdoor!\n);
test2();
return 1;
}
//hello2.c
//written by Emdoor
#include hello2.h
#include stdio.h
void test2(void)
{
printf(Welcome Emdoor! –hello2\n);
}
//hello2.h
//written by Emdoor
void test2(void);
# makefile test for multi files program
#written by Emdoor
CC=gcc
CFLAGS=
OBJS=hello1.o hello2.o
hello: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
hello1.o: hello1.c
$(CC) $(CFLAGS) –c $ -o $@
hello2.o: hello2.c
$(CC) $(CFLAGS) –c $ -o $@
clean:
rm –rf hello *.o
您可能关注的文档
- Howmany4[小学英语英语教学PPT课件].ppt
- Howmucharethesetrousers第二课时说课稿.doc
- Howtouseweibo英语简介如何使用微博.ppt
- HRF-003业务员20080830.doc
- HSDPARF测试学习总结.doc
- HSDPA关键技术及未来发展情况介绍.doc
- HSE-Routing&Switching-2011-05-19最新版.doc
- HT45FM2C推广.doc
- HSDPA基础理论知识.ppt
- ibluever源.doc
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)