autoconf 和automake使用示例

本文详细解析了mde-1.3.0项目中的configure.in文件,介绍了如何利用autoconf和automake宏处理系统类型、编译器检测、Makefile规则等内容。通过AC_PREREQ、AC_INIT、AC_CANONICAL_SYSTEM等宏,实现configure脚本的自动生成,以适应不同的编译需求,如交叉编译和条件编译。同时,讲解了Makefile.am的编写规则,包括可执行文件、静态库、头文件和数据文件的构建,并给出了子目录的构建处理。最后,指导读者如何执行autogen.sh、automake、autoconf等相关命令,生成满足交叉编译需求的Makefile文件。
摘要由CSDN通过智能技术生成

对 mde-1.3.0 中的 configure.in 进行解读

dnl Process this file with autoconf to produce a configure script.
/* dnl 是注释的开头 */
AC_PREREQ(2.13)
/* AC_PREREQ宏声明本文件要求的autoconf版本 */
AC_INIT(mginit/mginit.c)
/* configure.in文件必须在开始所有工作之前调用AC_INIT宏,并且在结束所有工作后调用AC_OUTPUT宏。
而事实上,也只有这两个宏是configure.in文件所必须的。AC_INIT语法如下:
  AC_INIT(unique_file_in_source_dir)
unique_file_in_source_dir是在源代码目录下的一个文件,对AC_INIT的调用在所产生的配置脚本文件
中生成一条shell命令,通过检查unique_file_source_dir是否存在来验证当前目录是否正确。 */

dnl ========================================================================
dnl needed for cross-compiling
AC_CANONICAL_SYSTEM
/* 检测系统类型并把输出变量设置成规范的系统类型,在调用了AC_CANONICAL_SYSTEM之后,下列输出变量包含了系统类型信息。
build,host,target 于是可以在configure 命令行通过 --host=arm_linux 来设置交叉编译
build就是您正在使用的机器,host就是您编译好的程式能够运行的平台,target就是您编译的程式能够处理的平台.这个build和host比较好理解,但是target就不好办了,到底什么意思呢?一般来说,我们平时所说的交差编译用不到他target的,比如./configure --build=i386-linux,--host=arm-linux就能够了, 在386的平台上编译能够运行在arm板的程式.但是,一般我们都是编译程式,而不是编译工具,假如我们编译工具,比如gcc,这个target就有用了.假如我们需要在一个我们的机器上为arm研发板编译一个能够处理mips程式的gcc,那么target就是mips了 */
dnl ========================================================================
dnl Checks for programs.
AC_PROG_MAKE_SET
/* 如果你在子目录中运行make,你应该通过使用make变量MAKE来运行它。 make的大部分版本把MAKE设置成make的程序名以及它所需要的任何选项。(但许多版本并没有把在命令行中设定的变量的值包括进来,因此它们没有被自动地传递。)一些老版本的 make并不设定这个变量。以下的宏使你可以在这些版本上使用它。
宏: AC_PROG_MAKE_SET
如果make预定义了变量MAKE,把输出变量SET_MAKE定义为空。否则,把 SET_MAKE定义成`MAKE=make'。为SET_MAKE调用AC_SUBST。
为了使用这个宏,在每个其他的、运行MAKE的目录中的`Makefile.in'添加一行:
@SET_MAKE@  */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值