本文主要总结在树莓派Linux下利用autoconf工具自动生成makefile文件,接着只需要输入make命令就可以生成可执行程序,然后执行可执行程序(手动编写makefile文件可以参考博主这篇博客:https://blog.csdn.net/naibozhuan3744/article/details/86103552),全文主要分为两大部分,分别是环境安装和示例用法,具体内容如下所述。
一、相关环境安装
要用autoconf工具自动生成makefile文件,需要安装autoconf脚本,一般情况下Linux是没带的。博主用的是树莓派自带的Linux系统(raspberry),安装autoconf输入下面命令:(如果第一次安装失败,可以输入sudo apt-get update,然后重新安装几次)
sudo apt-get install autoconf
二、用autoconf自动生成一个makefile文件示例
2.1在工程目录下,新建一个main.c文件,输入下面内容;
#include
int main(int argc, char** argv)
{
printf("This is an Auto Makefile!\n");
return 0;
}
2.2进入工程所在目录,输入命令autoscan,增加两个文件,分别为autoscan.log、configure.scan。
autoscan
2.3将configure.scan重新命名为configure.in,并且将其内容修改如下:
原来的configure.in内容
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([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_OUTPUT
修改后的configure.in内容
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT(main, 1.0, [email protected]) //modify
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE(main,1.0) //new increase
# 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]) //if there is,there is no increase
AC_OUTPUT
2.4接着输入命令aclocal,两个文件,分别为aclocal.m4、autom4te.cache,该文件的功能是处理宏定义;
aclocal
2.5接着输入命令autoconf,生成configure文件,如下图所示:
autoconf
2.6接着输入命令autoheader,生成config.h.in文件;如果没有附加符号定义,就不需要创建“acconfig.h”文件。
至此,configure文件基本创建完毕,接下来是创建makefile文件。
autoheader
2.7在工程目录下,创建一个名为Makefile.am的文件,输入下面内容:(代码内容参考这篇博客:https://blog.csdn.net/qq_19004627/article/details/79061457#commentsedit)
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=main
main_SOURCES=main.c
脚本配置文件Makefile.am通过automake编译转换为Makefile.in。
2.8接着输入命令automake --add-missing,生成Makefile文件。其中,--add-missing表示automake运行时,会自动添加一些必要的脚本文件。
automake --add-missing
2.9继续输入命令configure,将Makefile.in自动配置为Makefile。
./configure
2.10输入命令make,编译生成可执行程序main,结果如下图所示:
make
2.11输入命令./main,程序执行如下图所示。
./main
至此,所有的配置和编译步骤结束!
参考内容:
https://blog.csdn.net/qq_19004627/article/details/79061457#commentsedit(参考:autoconf工具自动生成makefile文件)
https://blog.csdn.net/liang890319/article/details/8274917(参考:autoconf工具安装)
https://blog.csdn.net/ztguang/article/details/51015373(参考:makefile中makefile.am内容讲解)