【轉】使用autotools生成makefile文件入門


autotools是一系列工具集,要使用這些工具當然首先要確認系統已經安裝了下列工具:
    autoscan
    aclocal
    autoconf
    autoheader
    automake
使用命令which ooxx可查看到命令的路徑,如果沒有就沒裝,用命令rpm -qa | grep automake 和命令rpm -qa | grep autoconf 看哪個包沒有裝(debin系列的就用類似的dpkg包管理命令查看)。

autotools 

 

要說入門當然是使用路人皆知的hello world程序作為示范代碼了:

//hello.c
#include <stdio.h>
#include <sys/time.h>
int main(void)
{
double sec;
struct timeval tv;

gettimeofday(&tv, NULL);
sec = tv.tv_sec;
sec += tv.tv_usec/1000000.0;
printf ("hello word!\nsec = %e\n", sec);
return 0;
}

 

程序文件hello.c放在test目錄中,確保此目錄只有hello.c一個文件,下面就開始autotools旅程:
   
    1:

運行命令$ autoscan 生成文件configure.scan,修改configure.scan,修改后文件內容如下(紅色修改,藍色添加):

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT(hello, 1.0)
AM_INIT_AUTOMAKE(hello, 1.0)
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.
AC_CHECK_HEADERS([sys/time.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_TIME

# Checks for library functions.
AC_CHECK_FUNCS([gettimeofday])

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

 

相對原文件,其實就是修改了一行,添加了兩行:
AC_INIT(hello,1.0)
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_FILES([Makefile])

修改文件完畢后,為文件改名 $ mv configure.scan configure.in





    2:

運行命令$ aclocal 生成aclocal.m4

    3:
運行命令$ autoconf 生成configure

    4:
運行命令$ autoheader 生成config.h.in,使程序可移植


    5:
創建空文件Makefile.am,寫入內容:

bin_PROGRAMS= hello
hello_SOURCES= hello.c


    6:
運行命令$ automake --add-missing   生成configure.in文件

    7:
不出意外的話,其實到上面都已經完成所有步驟了,下面就是編譯運行軟件三步曲:  configure  &&  make  &&  make install
這里沒必要make install,直接運行當前目錄下的hello文件即可:
[mgqw@localhost test]$ ./hello
hello word!
sec = 1.244798e+09
   
結束語:
    上面的步驟只是簡單介紹了autotools的使用過程,其中具體含義以及其他功能上百度/狗狗一搜一大把,記住百度/狗狗永遠是我們最好的老師。

 

 

 

 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com