发信人: elton_99()
整理人: zelor(2002-05-24 10:42:04), 站内信件
|
中文Unix论坛技术资料
Copyright www.unixaid.net 2001/10/15
任何网站或者传统媒体转载,必须得到我们的授权!!!
否则我们保留追究相关法律责任的权利!!!
作者: 斯汀 ([email protected])
本 ([email protected])
使用auto工具自动生成Makefile文件实列
=========================================
Autoconf上可以自动生成一个shell脚本,利用他你可在不同的unix下自动生成特定的Makefile文件,而且这个脚本可以脱离autoconf来运行。生成的这个脚本名字叫configure,执行他后,你回得到以下几个文件:
· 在每个子目录下生成一个 `Makefile'
· 作为一个可选项,还可能生成一个 C header文件,包含 #define directives
· 一个 `config.status' 文件,
· shell script :config.cache'
· `config.log'
目录结构:
.
|-- Makefile
|-- Makefile.am
|-- Makefile.in
|-- README
|-- aclocal.m4
|-- config.cache
|-- config.log
|-- config.status
|-- configure
|-- configure.in
|-- configure.scan
|-- install-sh -> /usr/local/share/automake/install-sh
|-- missing -> /usr/local/share/automake/missing
|-- mkinstalldirs -> /usr/local/share/automake/mkinstalldirs
|-- src
| |-- Makefile
| |-- Makefile.am
| |-- Makefile.in
| |-- dlpi.lib
| | |-- Makefile
| | |-- Makefile.am
| | |-- Makefile.in
| | |-- dlpi.c
| | |-- dlpi.o
| | |-- dlpi_lib.h
| | `-- libdlpi.a
| |-- p.c
| |-- put
| |-- put.c
| |-- put.o
| |-- t
| |-- t.c
| `-- t.o
`-- stamp-h
粗体为最原始的文件
1. autoscan
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/p.c)
dnl Checks for programs.
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_RANLIB
dnl Checks for libraries.
dnl Replace `main' with a function in -lxnet:
AC_CHECK_LIB(xnet, main)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
AC_CHECK_FUNCS(gettimeofday)
AC_OUTPUT(src/Makefile Makefile)
2. 修改configure.scan
增加 AM_INIT_AUTOMAKE(dlpi_app,1.0) (使用automake)
修改: AC_OUTPUT(src/Makefile src/dlpi.lib/Makefile Makefile)
3. aclocal
4. autoconf (现在生成configure脚本)
5. 编写Makefile.am文件:
top目录下
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src
Src目录下:
bin_PROGRAMS= t put (我们要生成2个文件)
t_SOURCES= t.c
put_SOURCES= put.c
SUBDIRS = dlpi.lib (下边还有一个目录)
INCLUDES = -Idlpi.lib/ (制定源代码里边的头文件路径)
LIBS = -lxnet (连接库名字)
LDADD = dlpi.lib/libdlpi.a (用户定义的库)
Dlpi.lib目录下:
noinst_LIBRARIES = libdlpi.a
libdlpi_a_SOURCES = dlpi.c dlpi_lib.h
6. automake -a (从Makefile.am 生成Makefile.in)
7. ./configure (生成Makefile)
8. make
中文unix社区 www.unixaid.net
============================
一个专业的unix技术交流社区
作者: 斯汀 ([email protected])
本 ([email protected]) 首发
任何问题或者Bug,请及时联络作者.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright www.unixaid.net 2000/11/01
任何网站或者传统媒体转载,必须得到我们的授权!!!
否则我们保留追究相关法律责任的权利!!!
---- 中国好酷网 www.haoku.net
|
|