【教程】Autotools的初级使用

来源:互联网 发布:understand4 for mac 编辑:程序博客网 时间:2024/05/16 14:06

Autotoos官方Manual地址:https://www.gnu.org/software/autoconf/manual/autoconf.html#Making-configure-Scripts

下面是Autotools的几个工具的使用流程,通过这个使用流程,我们就可以大概了解Autotools的使用方法.





下面,我将以一个实例,具体讲解Autotools的使用方法

1.创建一个简单的.c文件,以做测试,内容如下

<style type="text/css">p { margin-bottom: 0.1in; line-height: 120%; }a:link {  }</style><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#include<stdio.h></span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">intsum(int a,int b);</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">intmain()</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">{</span></span></p><p>        <span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">inta;</span></span></p><p>        <span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">a= sum(3,5);</span></span></p><p>        <span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">printf("Theresult is %d\n",a);</span></span></p><p>        <span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">return0;</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">}</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">intsum(int a,int b)</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">{</span></span></p><p>        <span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">intc = a + b;</span></span></p><p>        <span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">returnc;</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">}</span></span></p>

2.使用atuoscan(我是在源文件目录中执行的),生成config.scan,并修改config.scande内容,并将其改名为config.ac

执行autoscan生成config.scan




修改config.scan的内容,修改后(注释部分有提示哪些是修改内容)内容如下:

<style type="text/css">p { margin-bottom: 0.1in; line-height: 120%; }a:link {  }</style><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#                                              -*- Autoconf -*-</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#Process this file with autoconf to produce a configure script.</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">AC_PREREQ([2.69])</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#ModifyBy Myself</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">AC_INIT(hello,1.0,847923458@qq.com)</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">AC_CONFIG_SRCDIR([hello.c])</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#ModifyBy Myself</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#AC_CONFIG_HEADERS([config.h])</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#ADDBy Myself</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">AM_INIT_AUTOMAKE(hello,1.0)</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#Checks for programs.</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">AC_PROG_CC</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#Checks for libraries.</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#Checks for header files.</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#Checks for typedefs, structures, and compiler characteristics.</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#Checks for library functions.</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">#ModifyBy Myself</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">AC_OUTPUT(Makefile)</span></span></p>
将config.scan重命名为config.ac

<style type="text/css"></style><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">mv  configure.scan   configure.ac</span></span></p>
3.使用aclocal以生成aclocal.m4文件

4.执行autoconf以生成configure(可执行文件,用来生成Makefile)

5.编写Makefile.am文件(用来生成Makefile.in),其内容如下:

<style type="text/css">p { margin-bottom: 0.1in; line-height: 120%; }a:link {  }</style><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">bin_PROGRAMS=hello</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">hello_SOURCE=hello.c</span></span></p>
6.执行命令automake --add-missing生成Makefile.in

执行automake --add-missing后,提示如下:

<style type="text/css">p { margin-bottom: 0.1in; line-height: 120%; }a:link {  }</style><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">root@jiasike:/home/jiasike/hello#automake --add-missing </span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">configure.ac:15:warning: AM_INIT_AUTOMAKE: two- and three-arguments forms aredeprecated.  For more info, see:</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">configure.ac:15:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">configure.ac:18:installing './compile'</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">configure.ac:15:installing './install-sh'</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">configure.ac:15:installing './missing'</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:installing './INSTALL'</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:error: required file './NEWS' not found</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:error: required file './README' not found</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:error: required file './AUTHORS' not found</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:error: required file './ChangeLog' not found</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:installing './COPYING' using GNU General Public License v3 file</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:    Consider adding the COPYING file to the version control system</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:    for your code, to avoid questions about which license yourproject uses</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">Makefile.am:installing './depcomp'</span></span></p><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">root@jiasike:/home/jiasike/hello#</span></span></p>
上面的提示告诉我们,还需要4个文件:NEWS README AUTHORS ChangeLog

所以,下一步我们要创建这四个文件,用命令:

<style type="text/css"></style><p><span style="font-family:Comic Sans MS, cursive;"><span style="font-size:18px;">touch  NEWS   README   AUTHORS   ChangeLog</span></span></p>
接着再一次执行automake

此时,我们可以看到,已经生成Makefile.in

7.执行configure生成Makefle

可以看到Makefile已经生成

8.检测Makefile是否能正常工作

make后,执行./hello若打印 The result is 8(如下图)则说明Makefile能正常工作


当然,也可以执行make install后,执行hello(可在任意位置执行).


0 0
原创粉丝点击