Top: Autoconf, Automake, and Libtool
Contents: Table of Contents
Index: Index
About: About this document
Table of Contents
1. 介绍
1.1 本书是什么
1.2 本书不是什么
1.3 谁应该读本书
1.4 本书如何组织
2. 历史
2.1 Unix 的多样性
2.2 第一个配置程序
2.3 Configure的发展
2.4 Automake的发展
2.5 Libtool的发展
2.6 Microsoft Windows
3. 如何运行configure和make
3.1 Configuring
3.2 configure产生的文件
3.3 最有用的Makefile目标
3.4 配置名称
4. Makefile介绍
4.1 目标和依赖
4.2 Makefile语法
4.3 宏
4.4 后缀规则
5. 一个最小的GNU Autotools项目
5.1 用户提供的输入文件
5.2 生成的输出文件
5.3 维护输入文件
5.4 为生成文件打包
5.5 文档和changelog
6. 写configure.in
6.1 什么是可移植性
6.2 可移植sh简介
6.3 检测顺序
6.4 需要检测什么
6.5 使用配置名称
7. GNU Automake 介绍
7.1 Automake 总纲
7.2 原型(Primaries)介绍
7.3 简单的原型
7.4 程序和库
7.5 FAQ
7.6 多目录
7.7 测试
8. 引导(Bootstrap)
9. 一个小型GNU Autotools项目
9.1 GNU Autotools 实践
9.1.1 项目目录结构
9.1.2 C 头文件
9.1.3 C++ 编译器
9.1.4 函数定义
9.1.5 替补(Fallback)函数的实现
9.1.6 K&R 编译器
9.2 A Simple Shell Builders Library
9.2.1 Portability Infrastructure
9.2.1.1 Error Management
9.2.1.2 Memory Management
9.2.1.3 Generalised List Data Type
9.2.2 Library Implementation
9.2.2.1 `sic.c' & `sic.h'
9.2.2.2 `builtin.c' & `builtin.h'
9.2.2.3 `eval.c' & `eval.h'
9.2.2.4 `syntax.c' & `syntax.h'
9.2.3 Beginnings of a `configure.in'
9.3 A Sample Shell Application
9.3.1 `sic_repl.c'
9.3.2 `sic_syntax.c'
9.3.3 `sic_builtin.c'
9.3.4 `sic.c' & `sic.h'
10. GNU Libtool介绍
10.1 Creating libtool
10.2 The Libtool Library
10.2.1 位置独立的代码
10.2.2 创建共享库
10.2.3 创建静态库
10.2.4 创建Convenience Library
10.3 链接一个可执行文件
10.4 链接一个库文件
10.4.1 Inter-library Dependencies
10.4.2 Using Convenience Libraries
10.5 Executing Uninstalled Binaries
10.6 Installing a Library
10.7 Installing an Executable
10.8 Uninstalling
11. GNU Libtool和configure.in,Makefile.am配合
11.1 整合 configure.in
11.1.1 额外的 Configure 选项
11.1.2 额外的宏(用于Libtool)
11.2 整合 Makefile.am
11.2.1 Creating Libtool Libraries with Automake
11.2.2 Linking against Libtool Libraries with Automake
11.3 Using libtoolize
11.4 Library Versioning
11.5 Convenience Libraries
12. 一个大型的GNU Autotools项目
12.1 Using Libtool Libraries
12.2 Removing `--foreign'
12.3 安装头文件
12.4 包含 Texinfo 文档
12.5 添加测试用例
13. 分发软件包
13.1 分发介绍
13.2 What goes in
13.3 The distcheck rule
13.4 Some caveats
13.5 Implementation
14. 安装和卸载configure过的包
14.1 文件安装到何处
14.2 安装的精细控制
14.3 Install hooks
14.4 Uninstall
15. 用GNU Autotools编写可移植的C
15.1 C Language Portability
15.1.1 ISO C
15.1.2 C Data Type Sizes
15.1.3 C Endianness
15.1.4 C Structure Layout
15.1.5 C Floating Point
15.1.6 GNU cc Extensions
15.2 Cross-Unix Portability
15.2.1 Cross-Unix Function Calls
15.2.2 Cross-Unix System Interfaces
15.3 Unix/Windows Portability
15.3.1 Unix/Windows Emulation
15.3.2 Unix/Windows Portable Scripting Language
15.3.3 Unix/Windows User Interface Library
15.3.4 Unix/Windows Specific Code
15.3.5 Unix/Windows Issues
15.3.5.1 Text and Binary Files
15.3.5.2 File system Issues
15.3.5.3 DOS Filename Restrictions
15.3.5.4 Windows File Name Case
15.3.5.5 Whitespace in File Names
15.3.5.6 Windows Separators and Drive Letters
15.3.5.7 Miscellaneous Issues
16. 用GNU Autotools编写可移植的C++
16.1 Brief History of C++
16.2 Changeable C++
16.2.1 Built-in bool type
16.2.2 Exceptions
16.2.3 Casts
16.2.4 Variable Scoping in For Loops
16.2.5 Namespaces
16.2.6 The explicit Keyword
16.2.7 The mutable Keyword
16.2.8 The typename Keyword
16.2.9 Runtime Type Identification (RTTI)
16.2.10 Templates
16.2.11 Default template arguments
16.2.12 Standard library headers
16.2.13 Standard Template Library
16.3 Compiler Quirks
16.3.1 Template Instantiation
16.3.2 Name Mangling
16.4 How GNU Autotools Can Help
16.4.1 Testing C++ Implementations with Autoconf
16.4.2 Automake C++ support
16.4.3 Libtool C++ support
16.5 Further Reading
17. 动态加载
17.1 动态模块
17.2 模块访问函数
17.3 查找模块
17.4 一个简单的 GNU/Linux 模块加载器
17.5 一个简单的 GNU/Linux 动态模块
18. 使用 GNU libltdl
18.1 libltdl 介绍
18.2 使用 libltdl
18.2.1 Configury
18.2.2 内存管理
18.2.3 模块加载
18.2.4 依赖库
18.2.5 动态模块
18.3 可移植库设计
18.4 dlpreopen 加载
18.5 用户模块加载器
18.5.1 加载器机制
18.5.2 加载器管理
18.5.3 加载器错误
19. GNU Automake 进阶用法
19.1 Conditionals
19.2 语言支持
19.3 自动依赖关系跟踪
20. 一个复杂的GNU Autotools项目
20.1 A Module Loading Subsystem
20.1.1 Initialising the Module Loader
20.1.2 Managing Module Loader Errors
20.1.3 Loading a Module
20.1.4 Unloading a Module
20.2 A Loadable Module
20.3 Interpreting Commands from a File
20.4 Integrating Dmalloc
21. M4
21.1 M4 做什么
21.2 GNU Autotools 如何使用 M4
21.3 M4 处理原理
21.3.1 扫描标记
21.3.2 宏以及宏展开
21.3.3 引用
21.4 M4 特性
21.4.1 丢弃输入
21.4.2 宏管理
21.4.3 条件语句
21.4.4 循环
21.4.5 转移
21.4.6 文件包含
21.5 在 GNU Autotools 框架中编写宏
21.5.1 句法约定
21.5.2 用 M4 调试
22. 编写可移植的Bourne Shell
22.1 为何要使用 Bourne Shell?
22.2 实现
22.2.1 Size Limitations
22.2.2 #!
22.2.3 :
22.2.4 ()
22.2.5 .
22.2.6 [
22.2.7 $
22.2.8 * versus .*
22.3 环境
22.4 工具
23. 为Autoconf写新的宏
23.1 Autoconf Preliminaries
23.2 重用已有的宏
23.3 宏编写指南
23.3.1 非交互行为
23.3.2 应用程序执行时检测系统特性
23.3.3 宏输出
23.3.4 宏命名
23.3.5 宏接口
23.4 实施细则
23.4.1 编写shell代码
23.4.2 正确使用M4
23.4.3 缓存结果
23.5 Future directions for macro writers
23.5.1 Autoconf 宏结构
23.5.2 Primitive macros to aid in building macros
24. 移植现有的库到GNU Autotools
24.1 Why autconfiscate
24.2 两种方法
24.3 Example: Quick And Dirty
24.4 Example: The Full Pull
25. 在Cygnus Cygwin中使用Autotools
25.1 Preliminaries
25.2 Installing GNU Autotools on Cygwin
25.3 Writing A Cygwin Friendly Package
25.3.1 Text vs Binary Modes
25.3.2 File System Limitations
25.3.2.1 8.3 Filenames
25.3.2.2 Separators and Drive Letters
25.3.3 Executable Filename Extensions
25.4 DLLs with Libtool
25.4.1 DLL Support with GNU Autotools
25.4.2 A Makefile.am for DLLs
25.4.3 A configure.in for DLLs
25.4.4 Handling Data Exports from DLLs
25.4.5 Runtime Loading of DLLs
25.5 Package Installation
26. 用GNU Autotools进行交叉编译
26.1 Host and Target
26.2 Specifying the Target
26.3 Using the Target Type
26.4 Building with a Cross Compiler
26.4.1 Canadian Cross Example
26.4.2 Canadian Cross Concepts
26.4.3 Build Cross Host Tools
26.4.4 Build and Host Options
26.4.5 Canadian Cross Tools
26.4.6 Supporting Building with a Cross Compiler
26.4.6.1 Supporting Building with a Cross Compiler in Configure Scripts
26.4.6.2 Supporting Building with a Cross Compiler in Makefiles
A. 安装GNU Autotools
A.1 Prerequisite tools
A.2 Downloading GNU Autotools
A.3 Installing the tools
B. 平台
C. 生成文件的依赖关系
C.1 aclocal
C.2 autoheader
C.3 automake and libtoolize
C.4 autoconf
C.5 configure
C.6 make
D. Autoconf 宏参考
E. 公开发行许可证
Index
__________________________________________________________________