linux使用---automake学习(从原理到实践,一步步完成automake)

目录

生成configure过程中各文件之间的关系图

详细介绍

 准备工作:

三、实例

2.操作步骤

(1)安装依赖的包

(2)autoscan

(3)aclocal

(3)autoconf

(4)autoheader

(5)Makefile.am

(6)automake

(7)测试

 (7)打包


生成configure过程中各文件之间的关系图

详细介绍

autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。

aclocal:根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”

automake:将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换 为Makefile。如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它 会自己产生config.guess和config.sub

autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。

 准备工作:

安装autoscan,

 sudo apt-get install automake

三、实例

我的文件是c++文件,这里创建一个hello.cpp文件,里面的内容如下:

#include <iostream>

using namespace std;

int main()
{
   cout<<"hello word"<<endl;
   return 0;
}

2.操作步骤

(1)安装依赖的包

ubuntu@ubuntu:~/Documents/project/autotest$ sudo apt-get install automake^C

automake包括:aclocal、automake等
autoconf包括:autoscan、autoconf等

(2)autoscan

(3)aclocal

将生成的configure.scan修改为configure.ac或configure.in,先修改configure.ac里面的内容,再进行aclocal的执行;

ubuntu@ubuntu:~/Documents/project/autotest$ vim configure.ac 

这里尤其要注意下面红色的代码,需要填对

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([hello], [1.0], [1583769112@qq.com])
AM_INIT_AUTOMAKE(hello,1.0)

AC_CONFIG_SRCDIR([hello.cpp])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CXX

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT(Makefile)

 

下面就是执行aclocal

ubuntu@ubuntu:~/Documents/project/autotest$ aclocal

下面详细介绍 configure.ac 文件的参数的意义

(3)autoconf

 此时可以看到已经生成了configure

(4)autoheader

autoheader生成了configure.h.in如果在configure.ac中定义了AC_CONFIG_HEADER,那么此文件就需要;

(5)Makefile.am

这里主要是修改Makefile.am文件

ubuntu@ubuntu:~/Documents/project/autotest$ vim Makefile.am
ubuntu@ubuntu:~/Documents/project/autotest$ cat Makefile.am 
AUTOMAKE_OPTIONS=foreign 
bin_PROGRAMS=hello 
hello_SOURCES=hello.cpp 

(6)automake

如果linux第一次使用automake这里容易出问题,如下出现了下面的问题:

configure.ac:7: installing './install-sh'
configure.ac:7: installing './missing'

 

其实这个通过这个命令automake --add-missing已经安装了,但是把错误打印了,给我们的感觉是还是有错误,此时只需要在执行一遍该命令即可。

此步主要是为了生成Makefile.in,加上--add-missing参数后,会补全缺少的脚本;

(7)测试

ubuntu@ubuntu:~/Documents/project/autotest$  ./configure
ubuntu@ubuntu:~/Documents/project/autotest$  make
ubuntu@ubuntu:~/Documents/project/autotest$  ./hello

和平时安装许多开源软件一样操作

 (7)打包

ubuntu@ubuntu:~/Documents/project/autotest$ make dist

执行后会发现一个安装包,这时候发给别人,解压编译即可运行了。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: /build_dir/host/automake-1.15/.configured' failed是一个错误信息,意思是构建目录中的automake-1.15版本的配置文件失败了。 automake是一个自动构建工具,用于生成Makefile.in文件。配置文件负责设置构建过程中的各种参数和选项。如果配置文件生成失败,将会导致构建过程无法进行。 这个错误可能由于多种原因引起,例如构建环境中缺少依赖的软件包、文件系统权限不足或是配置文件本身存在问题等。 为了解决这个问题,我们可以尝试以下几个步骤: 1. 检查依赖软件包是否已安装:在构建过程中,可能需要依赖其他软件包。我们可以使用包管理器来检查这些依赖的软件包是否已正确安装。 2. 确保文件系统权限:检查构建目录及其父目录的权限设置。如果没有足够的权限,配置文件生成可能会失败。尝试使用sudo或管理员权限运行构建过程。 3. 检查配置文件是否正确:如果配置文件本身存在问题,可以尝试查看详细的错误日志,找出具体的配置错误,并进行相应的修复。 4. 更新automake版本:如果当前使用automake版本较旧,可以尝试更新到最新版本,以解决已知的问题和错误。 总之,解决/build_dir/host/automake-1.15/.configured' failed错误需要仔细检查并确认构建环境和配置文件的正确性,并采取适当的措施来修复问题。 ### 回答2: 这个错误提示是在构建目录下运行Automake 1.15的时候出现了问题。可能有以下几个原因导致此错误: 1. automake-1.15版本未正确安装:请确保已经正确安装了automake-1.15版本,并且安装路径正确。可以通过运行命令`automake --version`来检查版本是否正确安装。 2. .configured文件权限问题:请确保.build_dir/host/automake-1.15/目录下的.configured文件具有足够的权限,以便Automake可以正确读取和写入该文件。可以使用`ls -l .configured`命令来检查文件权限,并通过`chmod`命令为文件设置正确的权限。 3. 构建环境配置问题:请确保构建环境的配置正确,包括路径设置、依赖库安装等。可能需要检查相关的环境变量和配置文件,确保构建目录下的automake-1.15可以正确访问相关的依赖项。 4. 构建目录下的配置文件错误:检查.build_dir/host/automake-1.15/目录下的配置文件是否正确,可能存在错误的配置项导致运行失败。可以尝试删除此目录并重新运行构建脚本,以生成正确的配置文件。 如果以上方法都无效,建议查看具体的错误信息以及生成的日志文件,以便更准确地定位问题并解决。可以结合相关的构建指南或者开发文档来排查这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值