LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 773|回复: 2

[[求助]]急:makefile编写

[复制链接]
发表于 2007-2-15 16:24:43 | 显示全部楼层 |阅读模式
对于编写makefile
简单的我还应付得了,可是这一次作业,接口函数多了一点,所以实在不知道怎么编写了。向各位高手求助了,谢谢!
文件结构如下:
gui.c
include/assert.h
include/except.h
include/mem.h
include/list.h
include/document.h
src/assert.c
src/except.c
src/mem.c
src/list.c
src/document.c

src/except.c的包含的头文件有:include "assert.h" "except.h"
src/mem.c包含的头文件有:include "assert.h" "except.h" "mem.h"
src/list.c包含的头文件有:include "assert.h" "mem.h" "list.h"
src/document.h包含的头文件有include <gtk/gtk.h> "mem.h" "document.h"

gui.c包含的头文件有:include <gtk/gtk.h> "list.h" "document.h"

所以只能求救了!
谢谢
发表于 2007-2-16 11:25:30 | 显示全部楼层
如果是很复杂的makefile,我建议你尝试用一下makefile自动生成工具比如AutoMake和AutoConf, 这些工具已经在mysql等项目中得到了广泛的应用。

在你的系统中安装下列软件包

  1. GNU Automake

    2. GNU Autoconf

    3. GNU m4

    4. perl

    5. GNU Libtool (如果你需要产生 shared library)

一般的流程是用autoscan产生 configure.scan 然后以它做蓝本修改成configure.in

然后执行 aclocal 和 autoconf ,分别会产生 aclocal.m4 及 configure 两个档案

自己编辑 Makefile.am 档,添加一些必要的信息

典型的配置可以如下

  AUTOMAKE_OPTIONS= foreign

   bin_PROGRAMS= hello


   hello_SOURCES= hello.c

AUTOMAKE_OPTIONS

              设定 automake 的选项。Automake 主要是帮助开发 GNU 软体的人员

          维护软体套件,所以在执行 automake 时,会检查目录下是否存在标

          准 GNU 软体套件中应具备的文件档案,例如 'NEWS'、'AUTHOR'、

          'ChangeLog' 等文件档。设成 foreign 时,automake 会改用一般软

          体套件的标准来检查。

bin_PROGRAMS

               定义我们所要产生的执行档档名。如果要产生多个执行档,每个档名

          用空白字元隔开。

hello_SOURCES

               定义 'hello' 这个执行档所需要的原始档。如果 'hello' 这个程式

          是由多个原始档所产生,必须把它所用到的原始档都列出来,以空白

          字元隔开。假设 'hello' 这个程式需要 'hello.c'、'main.c'、

          'hello.h' 三个档案的话,则定义


           hello_SOURCES= hello.c main.c hello.h

如果我们定义多个执行档,则对每个执行档都要定义相对的filename_SOURCES。


执行 automake --add-missing ,Automake 会根据 Makefile.am 档产生

一些档案,包含最重要的 Makefile.in


最后的步骤就很熟悉了

./configure

make

你的软件已经安装在当前目录了

可能讲得不是很清楚,有什么问题我们可以一起讨论

qq:407222680
回复 支持 反对

使用道具 举报

发表于 2007-2-16 17:23:15 | 显示全部楼层

用gcc -E 来帮你找引用关系吧,不过建议用automake

gcc -E  -E                       Preprocess only; do not compile, assemble or link
回复 支持 反对

使用道具 举报

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

本版积分规则

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