47 源码包配置工具.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:16 大小:84KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

47 源码包配置工具.pdf

47源码包配置工具.pdf

预览

免费试读已结束,剩余 6 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

嵌入式系统程序设计大连理工大学软件学院嵌入式系统工程系赖晓晨源码包配置工具†GNUautoconf简介†自动生成makefile文件实例一、GNUautoconf简介Autoconf是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的shell脚本的工具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的,就是说配置脚本的用户并不需要拥有Autoconf由Autoconf生成的配置脚本在运行的时候不需要用户的手工干预;通常它们甚至不需要通过给出参数以确定系统的类型。GNUautoconf的发展Autoconf目前还不能完成几项使软件包可移植的工作。其中包括为所有标准的目标自动创建`Makefile'文件,包括在缺少标准库函数和头文件的系统上提供替代品。目前正在为在将来添加这些特征而工作。可移植性面临的问题程序的可移植性:相同的源代码不必修改就能在多种平台下编译。代码自身必须是可移植的„很少对运行时的函数库做假设。„语法要遵守ISO/ANSI标准开发者必须对不同系统的编译和运行环境,甚至是硬件有所了解。„了解不同硬件平台的特点,例如大小端等„系统服务的功能可能不同,文件系统的约定可能不同autoconf存在的意义†为了使程序具备较好的可移植性,开发人员不得不维护一个复杂的通用makefile。†GNUautoconf是自动生成makefile文件的一个工具软件,目的是解除维护makefile的负担程序员编程时可以作出的假设†假设ANSIC编译器可以得到†假设是为POSIX兼容环境编写程序怎样使程序具有可移植性?†尽可能避免针对特定系统的假定和方法†尽量隔离依赖于系统的部分。†尽可能复用已有的函数和接口。†使用标准接口:POSIX标准、标准C/C++语言、标准库如标准C库数学库等。使用环境†使用autoconf前,系统必须安装了如下软件„GNUautomake„GNUautoconf„GNUm4„perl„GNUlib工具autoconf功能†autoconf所生成的makefile除了可以做到程序的编译、链接外,还把如何产生程序文件(手册、info文件等)的动作和把源程序打包以供发布的动作都考虑进去,生成的makefile符合标准格式二、自动生成makefile文件实例†建立目录:„mkdir/devel/hello„cd/devel/hello†新建hello.c文件„vihello.c#include<stdio.h>main(){printf(“helloworld.\n”);}自动生成makefile文件(续)†运行命令„autoscan生成了文件configure.scan†修改文件configure.scan后缀为in„编辑configure.in文件如下AC_INIT(hello.c)AM_INIT_AUTOMAKE(hello,1.0)AC_PROG_CCAC_OUTPUT(makefile)自动生成makefile文件(续)†运行命令„aclocal„autoconf生成了configure文件†编辑文件:makefile.am,内容如下:AUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c自动生成makefile文件(续)†运行命令„automake--add-missing生成了makefile.in文件„./configure生成makefile文件„make生成了可执行文件hello„./hello自动生成makefile文件(续)†automake生成标准makefile文件†运行命令„makeall:编译可执行文件„makeclean:清除可执行文件和.o文件„makedistclean:清除可执行文件、.o文件和makefile文件„makeinstall:安装可执行文件到系统标准目录„makedist:打包源文件及相关文件编辑hello.cmakefile生成流程autoscanconfigure.scan修改宏configure.inaclocalautoconfconfigure编辑makefile.amautomakemakefile.in./configuremakefilemakedistmakehellohello-1.0.tar.gz