免费注册 查看新帖 |

Chinaunix

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

求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-21 21:21 |只看该作者 |倒序浏览
我是个unix的初学者
可是我现在有个棘手的问题,
有个题目编几个c语言程序,然后是用make编译
可是我对make一点也不懂,能不能给我指导呀,最好给几个好的例子,谢谢了,各位兄弟了!!!!!!!!

论坛徽章:
0
2 [报告]
发表于 2003-05-22 13:47 |只看该作者

求助

主要是编写makefile

论坛徽章:
0
3 [报告]
发表于 2003-05-22 20:18 |只看该作者

求助

第五章:使用make

[]什么是make?

  unix(linux)是一个天生的开发平台,我为此感到高兴.make是一个强力的工具.它能自动跟踪相互依赖的源代码块并组成一程序,使得很容易建立一可执行程序.make就是这种有依赖关系的部分和代码之间所作的规格说明.


[] 所有的程序都要使用make?
  是的.尽管你只有几个简单的模块,但你需要有一种结构来支持它从简单走向复杂.除非你的程序已经盖棺定论.

[]makefile由哪些组成?
  makefile由以下几个部分组成:

  注释.
  ^^^^
  使用#符号插入.make将忽略#之后的任何内容以及其后的return键.

  变量.
  ^^^^
  make允许定义与shell变量类似的有名变量.比如,你定义了sources=prog.c,那么该变量的值$(scoures)就包含了源文件名.

  依赖关系.
  ^^^^^^^^
  左边是目标模块,后接一冒号.再接与该模块有依赖关系的模块.

  命令.   
  ^^^^
  以tab键开始(即使用相同数量的空格也不能代替它).


[]makefile示例
  下面介绍一个简单的示例来说明make的用法.假设你的程序有两个源文件main.c和myc.c,一个位於子目录include下的头文件myhead.h,一个库由三个源文件myrout1.c,myrout2.c,myrout3.c产生.
  其makefile文件为:
  #一个基本的makefile文件.
  #其中包括个人的头文件和个人库.
  headers=include/myhead.h
  sources=main.c myc.c
  product=$(home)/bin/tool
  lib=myrout.a
  libsoures=myrout1.c myrout2.c myrout3.c
  cc=cc
  cflags=-g
  all(product)
  $(product)(sources)
    $(cc)$(cflags) -o $(product)$(sources)
  lint(product)
    lint $(sources)$(libsources)
  哈哈,挺象shell编程的.如果你与我一样使用linux下的gcc,那么只要把上面的cc=cc改为cc=gcc即可.怎么样,想来一个更复杂点的吗?

[]一个更为复杂的makefile
  你是否注意到,在上例中,只要启动make,就会重新编译所有源代码.
  如果你能看懂以下的makefile,恭喜恭喜,你通关了.
  #一个更为复杂的makefile
  headers=include/myhead.h
  soures=main.c myc.c
  objects=main.c myc.c
  product=$(home)/bin/tool
  lib=myrout.a
  libsources=myrout1.c myrout2.c myrout3.c
  libobjects=$(lib)(myrout1.o)$(lib)(myrout2.o)$(lib)(myrout3.o)
  include=include
  cc=cc
  cflags=-g -xc
  lint=lint
  lintflags=-xc
  all(product)
  $(product)(objects)$(lib)
    $(cc)(cflags)-o$(product)$(objects)$(lib)
  .c.o: $(headers)
    $(cc)$(cflags) -c i$(include)$<
  $(lib)(headers)$(libsources)
    $(cc)  $(cflags) -c $(?:.o=.c)
    ar rv $(lib) $?
    rm $?
  .c.c:;
  lint:  $(product)
    $(lint)$(liniflags)$(sources)$libsources)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP