autoconf/automake自动化工具

1. 查看autoconf ,automake,perl,m4是否安装

[xpan@localhost ~]$ rpm -qa |grep autoconf
autoconf-2.68-3.fc17.noarch
[xpan@localhost ~]$ rpm -qa |grep automake
automake14-1.4p6-22.fc17.noarch
automake17-1.7.9-15.fc17.1.noarch
automake-1.11.3-1.fc17.noarch
[xpan@localhost ~]$ rpm -qa |grep perl
perl-Digest-1.17-2.fc17.noarch
perl-TimeDate-1.20-6.fc17.noarch
......
[xpan@localhost ~]$ rpm -qa |grep m4
m4-1.4.16-3.fc17.i686

2. 查看autoconfig,automake命令所在的位置

[xpan@localhost ~]$ whereis aclocal
aclocal: /bin/aclocal /usr/bin/aclocal /usr/share/aclocal /usr/share/man/man1/aclocal.1.gz
[xpan@localhost ~]$ whereis autoscan
autoscan: /bin/autoscan /usr/bin/autoscan /usr/share/man/man1/autoscan.1.gz
[xpan@localhost ~]$ whereis autoconf
autoconf: /bin/autoconf /usr/bin/autoconf /usr/share/autoconf /usr/share/man/man1/autoconf.1.gz
[xpan@localhost ~]$ whereis autoheader
autoheader: /bin/autoheader /usr/bin/autoheader /usr/share/man/man1/autoheader.1.gz
[xpan@localhost ~]$ whereis automake
automake: /bin/automake /usr/bin/automake /usr/share/man/man1/automake.1.gz

3.Autoscan工具生成configure.ac文件
[xpan@localhost 2.6]$ mkdir hello
[xpan@localhost 2.6]$ cd hello/
[xpan@localhost hello]$ ls
[xpan@localhost hello]$ vi hello.c
[xpan@localhost hello]$ ls
hello.c
[xpan@localhost hello]$ cat hello.c
int main( int argc, char** argv)
{
printf("hello! GNU\n");
return 0;
}
[xpan@localhost hello]$ autoscan ./
[xpan@localhost hello]$ ls
autoscan.log  configure.scan  hello.c
[xpan@localhost hello]$ cat configure.scan
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.


AC_PREREQ([2.68])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([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


[xpan@localhost hello]$  cp configure.scan configure.ac

[xpan@localhost hello]$ ls
autoscan.log  configure.ac  configure.scan  hello.c

[xpan@localhost hello]$ cat configure.ac
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.68])
AC_INIT(hello, 1.0,pxh7212@163.com)
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([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(Makefile)
[xpan@localhost hello]$

3. 使用aclocal工具生成aclocal.m4

[xpan@localhost hello]$ aclocal
[xpan@localhost hello]$ ls
aclocal.m4  autom4te.cache  autoscan.log  configure.ac  configure.scan  hello.c

 

4.使用autoconf 工具生成configure文件

[xpan@localhost hello]$ autoconf
[xpan@localhost hello]$ ls
aclocal.m4      autoscan.log  configure.ac    hello.c
autom4te.cache  configure     configure.scan

5.使用autoheader工具生成configure.h.in文件
[xpan@localhost hello]$ find / -name acconfig.h
/usr/src/kernels/3.4.0-1.fc17.i686/include/acpi/acconfig.h
[xpan@localhost hello]$ autoheader
[xpan@localhost hello]$ ls
aclocal.m4      autoscan.log  configure     configure.scan
autom4te.cache  config.h.in   configure.ac  hello.c

6.创建Makefile.am文件

[xpan@localhost hello]$ vi Makefile.am
[xpan@localhost hello]$ cat Makefile.am
UTOMAKE_OPTIONS=foreign   //软件等级 foreign, gnu, gnits 默认等级gnu
bin_PROGRAMS=hello              //定义要产生的执行文件名
hello_SOURCES=hello.c           //源文件名,如果有多个文件,文件名中间用空格分开
[xpan@localhost hello]$

7. 使用Automake生成Makefile.in文件

[xpan@localhost hello]$automake --add-missing

8.配置

[xpan@localhost hello]$./configure     //生成Makefile文件

 

gcc编译参数:

-fPIC 生成与位置无关的代码,这样库就可以在任何位置被链接和装载;

-shared 指定生成共享链接库;

-static 指定生成静态链接库;

-l 指定链接的库文件;

-L 指定库文件所在的位置;

 

 

 

 

 

 

posted @ 2012-06-11 13:21  一路来过  阅读(503)  评论(0编辑  收藏  举报