网络操作系统- Linux基础 主讲人:王柯wangk(@swnu.edu.cn 西南师范大学计算机科学系2005年春
网络操作系统-Linux基础 主讲人:王柯 wangk@swnu.edu.cn 西南师范大学计算机科学系 2005年春
Red hat linux编程基础 第23章一第25章
Red Hat Linux 编程基础 第23章 - 第25 章
第23章Linuⅹ基础编程 231GNU计划的实用程序 23.2编程环境 23.2GCC介绍 234 GNU make介绍 23.5gdb调试工具 236编程语言
第23章 Linux 基础编程 • 23.1 GNU计划的实用程序 • 23.2 编程环境 • 23.2 GCC介绍 • 23.4 GNU make介绍 • 23.5 gdb调试工具 • 23.6 编程语言
GNU Package的典型安装 1.下载源代码包io10arg幕后英雄 2. tar c10 GNU Auto Tools: 问题1:配置脚本 configure autoconf, automake 3.cd是怎么生成的? libtool, autoscan, autoheader 4. conure 5. make 6.(su)m间题2: configure脚本怎么知 道该如何生成 Makefile
1. 下载源代码包foo-1.0.tar.gz 2. tar xvzf foo-1.0.tar.gz 3. cd foo-1.0 4. ./configure 5. make 6. (su) make install 问题1:配置脚本configure 是怎么生成的? 问题2:configure脚本怎么知 道该如何生成Makefile 幕后英雄—— GNU Auto Tools: autoconf, automake, libtool, autoscan, autoheader…… GNU Package的典型安装
All in one solution GNU Auto tools是上个世纪90年代开始发展起 来的一系列辅助开发、打安装包的自动化工具 各种工具分别开发,但是协同工作得很好。比 如 autoconf;" automake, libtool等等。 但是,连开发者自己也承认,这套工具虽然好 用,但是学习曲线很陡峭。 困难在于:一套新的思路和习惯,一套自定义 的宏和规则,使用者的交流
All in One Solution? • GNU Auto Tools是上个世纪90年代开始发展起 来的一系列辅助开发、打安装包的自动化工具。 • 各种工具分别开发,但是协同工作得很好。比 如autoconf, automake, libtool等等。 • 但是,连开发者自己也承认,这套工具虽然好 用,但是学习曲线很陡峭。 • 困难在于:一套新的思路和习惯,一套自定义 的宏和规则,使用者的交流
工作原理 (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 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 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. 检查程序用到的库