工作原理 (autoscan edit aclocal configure scan configure. in aclocalm4 autoconf automake Makefile, am Makefile. in conFigure Makefile
工作原理 autoscan configure.scan configure.in Makefile.am Makefile.in Makefile automake edit aclocal.m4 aclocal configure autoconf
· Autoconf:根据用户提供的 configure. in文件,生成 个名为 configure的脚本。该脚本可以搜集有关移植性 的平台相关信息,这些信息被用来生成 Makefiles,配 置头文件和其它平台相关的文件 Automake:根据用户提供的一个高层次的生成规则 Makefile, am,生成 Makefile文件的模板 Makefile. in。 Automake生成的 Makefiles符合GN的 Makefile标准, 用户无需再手工编写 Makefile文件 · Libtool:使得生成内存位置无关的代码且让共享库在 不同平台间移成为可能。它可以不依赖 autoconf和 automake单独运行,另一方面, automake和ito0可 以无缝地集成使用
• Autoconf:根据用户提供的configure.in文件,生成一 个名为configure的脚本。该脚本可以搜集有关移植性 的平台相关信息,这些信息被用来生成Makefiles,配 置头文件和其它平台相关的文件。 • Automake:根据用户提供的一个高层次的生成规则 Makefile.am,生成Makefile文件的模板Makefile.in。 Automake生成的Makefiles符合GNU的Makefile标准, 用户无需再手工编写Makefile文件。 • Libtool:使得生成内存位置无关的代码且让共享库在 不同平台间移成为可能。它可以不依赖autoconf和 automake单独运行,另一方面,automake和libtool可 以无缝地集成使用
Hello world- Step by Step hello. c #include <stdio.h> int main( printf( Hello World! n); return 0 02. Makefile. am bin Programs= hello hello SOURCES helloc configure. in AC INIT(hello. c) AM INIT AUTOMAKE(hello, 0.1) AC PROG CC AC OUTPUT(Makefile) 4. aclocal 5. autoconf 6. automake --add-missing--foreign 7. /configure 8mae( make install安装, make dist产生安装包)
Hello World – Step by Step • 1. hello.c #include <stdio.h> int m ain() { printf(“Hello World!\n”); return 0; } • 2. Makefile.am bin_P ROGRAMS = hello hello_SOUR C ES = hello.c • 3. configure.in AC_INIT(hello.c) AM_INIT_AUTOMAKE(hello, 0.1) AC_PROG_CC AC_OU TPUT(Makefile) • 4. aclocal • 5. autoconf • 6. automake --add-missing --foreign • 7. ./configure • 8. make ( make install 安装,make dist 产生安装包)
configure in(1) 是 configure.本的输入文件,为了解决在不同 unⅸx变种之间移植程序的问题:库名可能不同, 应用程序名可能不同,结构和常量的定义可能 不同 configure脚本完成 autoconf与 automake的初始化 工作,为不同的平台定义相应的宏,检测并指 定适当的程序名、库名、结构和常量名等等, 指定要为哪些目录输出 Makefile文件。总之, 为编译程序做好一切准备工作
configure.in(1) • 是configure脚本的输入文件,为了解决在不同 unix变种之间移植程序的问题:库名可能不同, 应用程序名可能不同,结构和常量的定义可能 不同…… • configure脚本完成autoconf与automake的初始化 工作,为不同的平台定义相应的宏,检测并指 定适当的程序名、库名、结构和常量名等等, 指定要为哪些目录输出Makefile文件。总之, 为编译程序做好一切准备工作
configure in(2) configure inl的八股文 1.基本初始化部分:包括 AC INIT(必须 第一个出现 AM INIT AUTOMAKE(程序包名,版 本号) AC CONFIG HEADER 2.可选宏:如 AC ARG ENABLE 3.检测某些程序的存在性 4.检查程序用到的库
configure.in(2) configure.in的八股文 1. 基本初始化部分:包括AC_INIT (必须 第一个出现), AM_INIT_AUTOMAKE(程序包名,版 本号), AC_CONFIG_HEADER 2. 可选宏:如AC_ARG_ENABLE 3. 检测某些程序的存在性 4. 检查程序用到的库