autotools工具使用

AutoTools 傻瓜入门
学习GNU/LINUX开发的编程人员,上手之后不久就会在编译开源软件的时候碰到configure脚本,过段时间还会知道configure脚本是autoconf生成的;但是真正想用起来autoconf,却是要弄明白config.h,configure.in,Makfile.am等一大堆的文件,这可能要花些功夫。让我们从一个例子开始,争取为大家省点力气。

 我们用个小程序作例子,计算一个整数的开方,建个工作目录:sqrt。程序很简单:
 #include<stdio.h>
 #include<math.h>
 int main()
 {
  int i=0;
  scanf("%d",&i);
  printf("sqrt(%d)=%f\n",i,sqrt(i));
 }
 接下来我们要编译这个程序:
 $cc -X -lm -o sqrt sqrt.c
 因为我们使用了数学库,所以要给链接器传递一个参数-lm。
 程序就完成了。
 我们想专业一点,给这个程序增加Make文件,不用再输入那么长的命令,同时还想让这个程序成为可移植的程序。这个时候,我们就需要用到autotools了。
 autotools包含了几个部分,最常用到的是autoconf和automake。
 我们先加入autoconf。
 autoconf需要一个configure.ac文件,幸运的是,我们不需要自己写这个文件,我们可以使用autoscan来生成这个文件。执行autoscan。
 $autoscan
autom4te: configure.ac: no such file or directory
autoscan: /usr/bin/autom4te failed with exit status: 1
错误信息先不用管,目录下多了几个文件: autoscan.log configure.scan。我们要关心的是configure.scan,这是一个原始版本的configure.ac。打开这个文件,把下面这一行修改一下:
 AC_INIT(FULL-PACKAGE-NAME, VERSION,BUG-REPORT-ADDRESS)
 改成
 AC_INIT([sqrt], [0.1.0],[you@mail.address])
参数的意思一目了然,不罗嗦了。接下来将文件另存为:configure.ac。执行:
 $autoconf
 我们看到,目录下又多了一些内容,我们关心的是configure这个脚本文件,执行一下试试吧!
 不过现在这个configure还没什么用,要发挥configure的真正目的——识别编译环境,配置编译选项的话,还要进行一些操作。

首先编辑configure.ac文件,在我们之前改动的AC_INIT...一行下面,加入如下一行内容:
AM_INIT_AUTOMAKE 
再执行一次autoconf试试?很不幸,我们遇到了错误:
configure.ac:6: error: possibly undefined macro:AM_INIT_AUTOMAKE...
因为找不到AM_INIT_AUTOMAKE宏,不要担心,因为我们少做了一步,先要把这些宏生成一下,当然是自动的。
$aclocal
$autoconf
现在的autoconf没有报错。这个时候再看看目录下面,发现多了一个aclocal.m4文件,这就是aclocal声称的宏命令文件,autoconf会使用它来生成新的configure脚本。
 是不是现在就能够自动搞定Makefile了?我们现在再执行一下configure,看看输出:
 configure: error: cannot find install-sh orinstall.sh in . ./.. ./../..
 和我们想的有点不同,我们还要用到automake命令做一些其它的事情,我们先执行一下:
 $automake
 configure.ac: required file `./install-sh' notfound
 configure.ac: required file `./missing' notfound
 automake: no `Makefile.am' found for anyconfigure output
 我们注意到最后一行,知道了还需要一个`Makefile.am`文件,这个文件我们要写一下,编辑一个文件,增加:
 bin_PROGRAMS = sqrt
 sqrt_SOURCES = sqrt.c
 sqrt_LDADD = $(LIBOJBS)
 执行automake试试?
 configure.ac: required file `./install-sh' notfound
configure.ac: required file `./missing' not found
automake: no `Makefile.am' found for any configure output
automake: Did you forget AC_CONFIG_FILES([Makefile]) inconfigure.ac?
 哦,不行,还要install-sh,missing文件,错误信息中,还提到AC_CONFIG_FILES([Makefile]),是的,我们还要修改一下configure.ac,在最后一行AC_OUTPUT前面增加一行:
 AC_CONFIG_FILES([Makefile])
 现在再执行一次automake吧,但是我们要加一个参数:
 $automake --add-missing
 configure.ac: installing `./install-sh'
 configure.ac: installing `./missing'
 Makefile.am: installing `./INSTALL'
 Makefile.am: required file `./NEWS' notfound
 Makefile.am: required file `./README' notfound
 Makefile.am: required file `./AUTHORS' notfound
 Makefile.am: required file `./ChangeLog' notfound
 Makefile.am: installing `./COPYING'
 configure.ac:8: required file `config.h.in' notfound

 

前面缺的四个文件简单,我们按照自己的情况编辑保存即可,config.h.in从哪里来呢? 现在让我们把config.h.in搞出来,这个要用到autoheader,我们执行命令:
 $autoheader
 config.h.in文件就生成好了。准备好了其它几个文本文件,我们再执行一次,这次不用加参数了,不过我们还要再执行一次autoconf,因为我们修改了configure.ac之后还没有执行过autoconf。
 $autoconf
 $automake
 我们再执行一次./configure:
 $./configure
 ...
 config.status: creating Makefile
 config.status: creating config.h
 ...
 让我们执行一下make吧。
 $make
 ...
 /home/nevernew/sqrt/sqrt.c:7: undefined referenceto `sqrt'
 ...
 是因为我们没有把数学库加入链接,修改Makefile.am,将对应行修改为:
 sqrt_LDADD = $(LIBOBJS) -lm
 更新一下文件:
 $autoconf
 $automake
 $./configure
 $make
 $./sqrt


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Autotools是一组工具,用于在Linux系统上自动化软件安装和配置过程。它包括Autoconf、Automake和Libtool工具,可以帮助开发人员编写可移植的Makefile文件,从而简化软件的构建和安装过程。要在Linux上安装Autotools,可以使用包管理器,如apt-get或yum,或者从源代码编译安装。具体步骤可以参考Autotools官方文档或相关教程。 ### 回答2: Autotools是一个集成的开发环境,用于管理GNU项目的自动化配置、编译和安装。Linux作为一个典型的开源操作系统,使用Autotools可以方便地安装和管理不同的应用程序和软件包。 要安装Autotools,需要先下载Autotools的软件包并解压。然后在终端窗口进入Autotools解压后的文件夹,并执行以下命令: $ ./configure $ make $ make install 第一个命令./configure用于自动配置系统并检查依赖项,这可能需要几分钟的时间。如果出现任何错误或警告,它们将被记录下来并在屏幕上显示。如果一切顺利,解决依赖项后,Autotools将准备开始编译。 第二个命令make将使用Makefile来生成Autotools的可执行文件。这可能需要几分钟到几个小时的时间,具体取决于系统的处理能力和软件包的大小。 最后一个命令make install将安装Autotools并将其添加到Linux系统的可执行文件路径。在此之后,可以使用Autotools配置、编译和安装其他软件包,软件包的安装步骤一般与Autotools的安装步骤类似。 总的来说,安装Autotools需要一些基础Linux命令的知识,并且需要掌握一些基本的配置和编译技能。但是一旦掌握了这些技能,使用Autotools可以方便地安装和管理众多的Linux软件包。 ### 回答3: 自动化工具Autotools)是一个用于构建和编译程序的软件集合。它包括三个实际工具Autoconf、Automake和Libtool。他们都在Linux上得到了广泛应用,并且非常重要,为了更好的掌握它们,我们需要学习他们的安装方法。 Autotools的安装需要先安装一些基本的工具和库,例如:gcc、make、autoconf、automake、libtool等。我们可以通过以下命令进行安装: ``` sudo apt-get update sudo apt-get install gcc make autoconf automake libtool ``` 安装完成以上工具和库之后,我们就可以安装Autotools了。在大多数Linux版本Autotools被分发为预编译包。因此,我们可以使用以下命令来安装: ``` sudo apt-get install autotools-dev autoconf-doc automake-doc ``` 使用此命令将安装Autoconf和Automake以及相关文档。如果你需要Libtool,可以使用以下命令: ``` sudo apt-get install libtool ``` 安装完成后,我们可以使用以下命令来测试自动化工具是否成功安装: ``` autoreconf --version autoconf --version automake --version libtool --version ``` 如果输出版本信息,则说明安装成功。 总之,安装Autotools需要我们先安装一些基础工具和库,然后安装Autotools本身。安装完成后,我们需要测试它是否正常工作。Autotools使用是一个大主题,需要根据每个项目来编写Makefile.am和configure.ac文件,来实现自动化编译的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值