博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下使用autoconf制作Makefile
阅读量:4507 次
发布时间:2019-06-08

本文共 4588 字,大约阅读时间需要 15 分钟。

第一步:常用工具安装
正所谓:“工欲善其事,必先利其器”。我们常用的工具主要有
GNU Automake
GNU Autoconf
GNU m4
GNU Libtool
1、查看自己系统中是否安装有这些工具
终端输入命令:which autoconf
2、如果没有装则安装
终端输入命令:sudo apt-get install autoconf
第二步:自动生成makefile的步骤
  该步骤是一成不变的,需要改变的只是文件里的内容
1、运行autoscan命令
    扫描源代码以搜寻普通的可移植性问题,比如检查编译器、库、头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
2、将configure.scan文件重命名为configure.ac。

    按照需要修改configure.ac文件configure.ac文件的内容是一些宏,confiugre.ac调用一系列autoconf宏来测试程序需要的 或用到的特性是否存在,以及这些特性的功能。这些宏经过autoconf处理后会变成检查系统特性、环境变量、软件必须的参数的shell脚本。configure.ac文件中的宏的顺序并没有规定,但是你必须在文件的最前面和最后面分别加上AC_INIT宏和AC_OUTPUT宏。

3、执行aclocal命令
    aclocal是一个perl 脚本程序。aclocal根据configure.ac文件的内容,自动生成aclocal.m4文件。
4、执行autoheader命令
    该命令生成config.h.in文件。该命令通常会从acconfig.h文件中复制用户附加的符号定义。
5、执行autoconf命令
    有了configure.ac和aclocal.m4 两个文件以后,我们就可以使用autoconf来产生configure文件了。configure脚本能独立于autoconf运行,且在运行的过程中,不需要用户的干预。
6、在Project目录下新建Makefile.am文件
7、运行automake  --add-missing命令
    automake会根据Makefile.am文件产生一些文件,其中最重要的是Makefile.in文件。
8、执行configure生成Makefile。
第三步:操作示例:Hellocsk.cpp

#include 
using namespace std;int main(){ cout<<"Hello csk"<

1、运行autoscan命令,生成文件列表如下

-rw-rw-r-- 1 csk csk   0 Nov 23 15:14 autoscan.log-rw-rw-r-- 1 csk csk 473 Nov 23 15:14 configure.scan-rw-rw-r-- 1 csk csk 100 Nov 23 15:13 Hellocsk.cpp

2、重命名configure.scan文件为configure.ac,修改configure.ac文件为如下样子

#                                               -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.69])AC_INIT(Hellocsk, 1.0, Chen_shikun@163.com)AC_CONFIG_SRCDIR([Hellocsk.cpp])AC_CONFIG_HEADERS([config.h])AM_INIT_AUTOMAKE(Hellocsk,1.0)# 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_CONFIG_FILES([Makefile])AC_OUTPUT

3、执行aclocal命令,生成的文件列表如下:

-rw-rw-r-- 1 csk csk 39670 Nov 23 15:19 aclocal.m4drwxr-xr-x 2 csk csk  4096 Nov 23 15:19 autom4te.cache-rw-rw-r-- 1 csk csk     0 Nov 23 15:14 autoscan.log-rw-rw-r-- 1 csk csk   512 Nov 23 15:18 configure.ac-rw-rw-r-- 1 csk csk   100 Nov 23 15:13 Hellocsk.cpp

4、执行autoheader命令,生成config.h.in文件,生成的文件列表如下:

-rw-rw-r-- 1 csk csk 39670 Nov 23 15:19 aclocal.m4drwxr-xr-x 2 csk csk  4096 Nov 23 15:20 autom4te.cache-rw-rw-r-- 1 csk csk     0 Nov 23 15:14 autoscan.log-rw-rw-r-- 1 csk csk   625 Nov 23 15:20 config.h.in-rw-rw-r-- 1 csk csk   512 Nov 23 15:18 configure.ac-rw-rw-r-- 1 csk csk   100 Nov 23 15:13 Hellocsk.cpp

5、执行autoconf命令,生成的文件列表如下:

-rw-rw-r-- 1 csk csk  39670 Nov 23 15:19 aclocal.m4drwxr-xr-x 2 csk csk   4096 Nov 23 15:20 autom4te.cache-rw-rw-r-- 1 csk csk      0 Nov 23 15:14 autoscan.log-rw-rw-r-- 1 csk csk    625 Nov 23 15:20 config.h.in-rwxrwxr-x 1 csk csk 135926 Nov 23 15:21 configure-rw-rw-r-- 1 csk csk    512 Nov 23 15:18 configure.ac-rw-rw-r-- 1 csk csk    100 Nov 23 15:13 Hellocsk.cpp

6、在Project目录下新建Makefile.am文件,Makefile.am文件的内容如下:

AUTOMARK_OPTIONS=foreignnoinst_PROGRAMS=HellocskHelloWorld_SOURCES=Hellocsk.cpp

7、运行automake --add-missing命令,就会得到Makefile.in文件。生成的文件列表如下:

-rw-rw-r-- 1 csk csk  39670 Nov 23 15:35 aclocal.m4-rw-rw-r-- 1 csk csk      0 Nov 23 15:38 AUTHORSdrwxr-xr-x 2 csk csk   4096 Nov 23 15:36 autom4te.cache-rw-rw-r-- 1 csk csk      0 Nov 23 15:30 autoscan.log-rw-rw-r-- 1 csk csk      0 Nov 23 15:38 ChangeLog-rw-rw-r-- 1 csk csk    625 Nov 23 15:34 config.h.in-rwxrwxr-x 1 csk csk 135926 Nov 23 15:35 configure-rw-rw-r-- 1 csk csk    512 Nov 23 15:35 configure.aclrwxrwxrwx 1 csk csk     32 Nov 23 15:37 COPYING -> /usr/share/automake-1.14/COPYINGlrwxrwxrwx 1 csk csk     32 Nov 23 15:37 depcomp -> /usr/share/automake-1.14/depcomp-rw-rw-r-- 1 csk csk    100 Nov 23 15:30 Hellocsk.cpplrwxrwxrwx 1 csk csk     32 Nov 23 15:37 INSTALL -> /usr/share/automake-1.14/INSTALLlrwxrwxrwx 1 csk csk     35 Nov 23 15:37 install-sh -> /usr/share/automake-1.14/install-sh-rw-rw-r-- 1 csk csk     80 Nov 23 15:37 Makefile.am-rw-rw-r-- 1 csk csk  22023 Nov 23 15:38 Makefile.inlrwxrwxrwx 1 csk csk     32 Nov 23 15:37 missing -> /usr/share/automake-1.14/missing-rw-rw-r-- 1 csk csk      0 Nov 23 15:38 NEWS-rw-rw-r-- 1 csk csk      0 Nov 23 15:38 README

如果运行automake --add-missing后出现如下提示

Makefile.am: error: required file './NEWS' not foundMakefile.am: error: required file './README' not foundMakefile.am: error: required file './AUTHORS' not foundMakefile.am: error: required file './ChangeLog' not found

则运行

touch NEWS README ChangeLog AUTHORS

8、执行configure生成Makefile

9、执行make 生成Hellocsk可执行文件

10、执行Hellocsk

csk@ubuntu:~/work/cyg/work$ ./Hellocsk Hello cskcsk@ubuntu:~/work/cyg/work$

 

 

转载于:https://www.cnblogs.com/chenshikun/p/6094089.html

你可能感兴趣的文章
对模拟博客园登陆的改进---软件的开发规范
查看>>
简易csv解析
查看>>
JS案例之4——Ajax多图上传
查看>>
登陆系统的设计2 - 登陆页面的三种形式
查看>>
位运算---水题
查看>>
原码 反码 补码 移码
查看>>
mysql事务之savepoint
查看>>
日常零碎总结
查看>>
循序渐进开发WinForm项目(6)--开发使用混合式Winform模块
查看>>
在WinForm应用程序中快速实现多语言的处理
查看>>
阿里腾讯开撕,钉钉的广告打到腾讯的地盘了
查看>>
Vim快捷键分类
查看>>
What is the .NET Framework?
查看>>
Xilinx Spartan 6 管脚分配(转)
查看>>
二层设备与三层设备的区别--总结
查看>>
iOS开发_Foundation框架
查看>>
Day01 计算机硬件基础
查看>>
Cocos2dx - Lua
查看>>
Struts2基础学习(四)—类型转换器和数据校验
查看>>
Post流提交、接收
查看>>