温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GNU-Tool中怎么实现自动化工程

发布时间:2021-08-10 11:38:31 来源:亿速云 阅读:164 作者:Leah 栏目:云计算

GNU-Tool中怎么实现自动化工程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.autoscan

autoscan 用来在给定目录及其子目录树中检查源文件,扫描源代码目录从而生成 configure.scan 文件。autoscan 可以用目录名作为参数,也可以省略参数,此时 autoscan 将把当前目录当作参数。

configure.scan 文件很重要,它是 configure.in 文件的原型,通过修改 configure.scan 后得到 configure.in 文件。

2.aclocal 

aclocal 是一个 perl 脚本程序。aclocal 根据 configure.in 文件的内容,自动生成 aclocal.m4 文件。aclocal 的定义是: “ aclocal-create aclocal.m4 by scanning configure.ac " 

3.autoconf

autoconf 是用来产生 configure 文件的。configure 是一个脚本,它能设置源程序来适应不同的操作系统平台,并且根据不同的系统生成合适的 Makefile ,从而可以使源代码能够在不同的操作系统平台上被编译出来。

4.autoheader

autoheader 负责生成 config.h.in 文件。该工具通常从 acconfig.h 文件中复制用户添加的符号定义。

5.automake

automake 是工具集中的重要成员之一,它调用脚本文件 Makefile.am , 并最终生成 configure 文件。我们就是通过调用 configure 文件来自动产生 makefile 的。

第一步 扫描本地目录

autoscan

第二步 重新命名为ac文件

mv configure.scan configure.ac

第三部 编辑configure.ac

第四步configure.ac文件宏说明:

AC_PRERREQ 宏声明文件要求的 autoconf 版本

AC_INIT 宏用来定义软件的名称和版本等信息。

其中FULL-PACKAGE-NAME 表示软件的名称;

VERSION 为软件的版本号; 

BUG-REPORT-ADDRESS 一般为作者的 E-mail

文件宏顺序说明:

AC_INIT

测试程序

测试函数库

测试头文件

测试类型定义

测试结构

测试编译器特性

测试库函数

测试系统调用

AC_OUTPUT

加入下面两个宏在configure.ac文件中

AM_INIT_AUTOMAKE([-Wall -Werror foreign]) 生成make参数

AC_CONFIG_FILES([Makefile])  宏用于生成相应的 Makefile 文件

第五步 这里可能会生成一个 aclocal.m4 ,该文件主要处理本地的宏定义:

aclocal

第六步骤 生成configure文件

autoconf

第七步 生成配置头文件

autoheader

第八步 创建Makefile.am,增加编译目标文件和源文件

Makefile.am

第九步 生成Makefile文件

automake --add-missing

第十步 编译配置

./configure --prefix=$(pwd)/install

第十一步

make && make install

simple:

Makefile.am

SUBDIRS = src
dist_doc_DATA = README.md

README.md

Some doc.

configure.ac

AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
 Makefile
 src/Makefile
])
AC_OUTPUT

src/Makefile.am

bin_PROGRAMS = autotools_hello_world
autotools_hello_world_SOURCES = main.c

src/main.c

#include <config.h>
#include <stdio.h>

int main (void) {
  puts ("Hello world from " PACKAGE_STRING);
  return 0;
}

Usage

autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall

This outputs:

Hello world from automake_hello_world 1.0

关于GNU-Tool中怎么实现自动化工程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI