Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3462588
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2007-12-05 13:36:08

自动创建Makefile的过程

  这两天开始学习C语言, 写了一会, 发现C 的Makefile是一个很郁闷的事情, 请教一个高手, 告诉俺有自动的工具可以解决问题, 网上找了一个教程, 发现更本不能用, 版本太老了,高手告诉我那个是autoconf版本互不兼容引起的, 于是教我做了下来, 过程如下, 首先我尝试编译两个文件, 一个是主文件,另外是一个库文件, 主文件名是mysql.c 库是co.c,  co.h
 
 首先是在那个目录下面 运行
   # autoscan
  系统会报错, 当是不用管
  报的错会像这样
  autom4te: configure.ac: no such file or directory
autoscan: /usr/bin/autom4te failed with exit status: 1
 
  然后是
  total 36
-rw-r--r--  1 root root    0 Jan 26 18:05 autoscan.log
-rw-r--r--  1 root root  439 Jan 26 18:05 co.c
-rw-r--r--  1 root root   49 Jan 26 18:05 co.h
-rw-r--r--  1 root root  454 Jan 26 18:05 configure.scan
-rw-r--r--  1 root root 1117 Jan 26 18:05 mysql.c
[root@my5]# mv configure.scan configure.in
 
然后是编辑 configure.in
 
里面的内容是
 
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([co.c])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
 
在其中添加后如下
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([co.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(mysql,1.0)
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([ Makefile ])
AC_OUTPUT
 
红色是添加的部分
 
然后在编辑一个文件
 
Makefile.am
 
内容如下
 
bin_PROGRAMS = mysql
mysql_SOURCES = co.c  co.h mysql.c
INCLUDES=-I /usr/local/mysql/include/mysql
mysql_LDADD=-L/usr/local/mysql/lib/mysql  -lmysqlclient
 
然后执行
 
aclocal; autoheader; automake -a -c --foreign; autoconf;
 
然后./configure
 
最后make 一般就OK
 
其中./configure 可以像其他产品一样 带 prefix这个参数
阅读(892) | 评论(0) | 转发(0) |
0

上一篇:Auto Makefile

下一篇:自动产生 Makefile

给主人留下些什么吧!~~