linux auto,Linux 自动化编译autotools的使用

[TOC]

自动化编译autotools的使用

具体操作步骤准备好源码文件helloworld.c 及 Makefile.am文件。

执行autoscan生成configure.ac并修改configure.ac

aclocal;

autoheader;

touch README NEWS AUTHORS ChangeLog

autoconf;

automake –add-missing;

./configure;

make;

./helloworld ; —运行程序

make dist —制作发布的包

make dist —制作发布的包并对其进行测试检查

make clean —清除make命令产生的目标文件及可执行文件

automake autoconf 自动化编译说明

利用autotools自动生成makefile文件,自动化编译自己的工程,autotools工具只需要用户输入简单的目标文件、依赖文件、文件目录就可以轻松地生成Makefile了。

首先安装autotools系列工具,包括aclocal、autoscan、automake、autoheader、autoconf等。

可以通过rpm –qa | grep auto来查看各个应用程序,如果没有

yum install automake 即可安装。

详细步骤:

1 建立自己的工程,编写源文件并创建Makefile.am

1)最顶层目录名为模块名 helloworld

源文件放在模块下面的src子目录,例如helloworld/src

2) 在src 下面,创建源文件main.c

3) 在helloworld目录下面创建Makefile.am文件—(为Makefile.in的模板文件,.am扩展名是automake的缩写),内容如下:

1SUBDIRS=src

4) 在helloworld/src 目录下创建Makefile.am文件 内容如下:

1

2

3bin_PROGRAMS=helloworld

helloworld_SOURCES=main.c

其中,PROGRAMS表示要产生的是可执行文件,有多个可执行文件文件时,可用空格分开,而bin表示可执行文件的安装目录SOURCES表示生成可执行文件需要的源文件,有多个源文件时,也用空格分开。比如想生成两个可执行程序helloworld1和helloworld2,那么就需要写成:

1

2

3

4

5bin_PROGRAMS=helloworld1 helloworld2

helloworld1_SOURCES=main1.c

helloworld2_SOURCES=main2.c

2. autoscan —创建autoconf的模板

autoscan—将生成configure.ac和autoscan.log文件,它会在给定目录及其子目录树中检查源文件,若没有给定目录,就在当前目录及其子目录树中进行检查。它会搜索源文件以寻找一般的移植性问题并且创建一个文件configure.ac,通过这个文件我们可以创建autoconf需要的模版文件。

1).目录下面生成了configure.ac 文件,利用命令

configure.ac 文件为autoconf 的模板文件,内容如下所示,其中#行为注释行:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35# -*- Autoconf -*-

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

AC_PREREQ([2.68])

AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

AC_CONFIG_SRCDIR([src/main.c])

AC_CONFIG_HEADERS([config.h])

# Checks for programs.

AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile

src/Makefile])

AC_OUTPUT

2). 修改configure.ac文件

1AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

修改为:

1AC_INIT(helloworld, 0.1, shaoguangleo@gmail.com) =–初始化autoconf

并添加

1AM_INIT_AUTOMAKE(helloworld, 0.1) =–初始化automake 必须的宏,这个如果不添加就会导致在autoconf时出错,信息大概为configure.in:no proper invocation of AM_INIT_AUTOMAKE was found

3.运行 aclocal — 复制所有的宏命令1aclocal

备注:configure.ac 里面包含了一系列的宏命令,运行aclocal的目的是把工程需要的宏命令展开。(aclocal.m4 就是configure.ac中用到的宏定义)会生成autom4te.cache文件夹和aclocal.m4文件。

4.运行autoheader —生成配置头文件的模板config.h.in并创建4个必要的文件1autoheader

备注:此时再创建4个必要的文件

1touch README NEWS AUTHORS ChangeLog

README :描述模块的功能,用法和注意事项

NEWS : 描述模块最新的动态

AUTHORS : 模块的作者及联系方式

ChangeLog : 记录模块的修改历史

上述几个文件可以暂时为空。

5. automake –add-missing — 生成Makefiel.in和所需要的脚本1automake –add-missing —其中add-missing选项会让automake自动添加一些必须的脚本文件。

6. autoconf — 生成configure脚本1autoconf

—生成configure脚本

7. ./configure — 生成最终的Makefile文件1./configure

configure 通常有两个参数

–prefix 用来指定安装目录 linux默认/usr/local

–host 用于交叉编译

8 编译1make

9 安装1make install

10 发布软件包1make dist或者make distcheck

生成helloworld-0.1.tar.gz

autotools生成Makefile流程图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值