GNU Toolchain is the de facto standard of IT industrial and has been improved by comprehensive open source contributions. In this session, it is expected to cover the mechanism of compiler driver, system interaction (take GNU/Linux for example), linker, C runtime library, and the related dynamic linker. Instead of analyzing the system design, the session is use case driven and illustrated progressively.
4. Makefile’s Big Trouble? GNU 的 Makefile 规范相当复杂,随着项目复杂性的增加,要写出一个正确而高效的 Makefile 相当困难,对新手而言更是如此。 越是复杂的软件越有可能有自己独特的 build 方法,怎么办?每次都重新学习?! 不同的类 Unix 操作系统之间存在着差异,移植性如何保证?需要大量手工编写的脚本和条件编译。
5. All in One Solution? GNU Auto Tools 是上个世纪 90 年代开始发展起来的一系列辅助开发、打安装包的自动化工具。 各种工具分别开发,但是协同工作的很好。比如 autoconf, automake, libtool 等等。 但是,连开发者自己也承认,这套工具虽然好用,但是学习曲线很陡峭。 困难在于:一套新的思路和习惯,一套自定义的宏和规则,使用者的交流 ?
11. configure.in(3) 检查某些头文件是否存在。 检查 Typedefs and structures 。 检查 Functions 。 指定在哪些目录输出 Makefile 。 Seems troublesome, mmm? Don’t worry, autoscan will do most of the work for you.
17. configure’s Gifts configure 脚本生成的 Makefile 中已经带了很多常用的目标如: check, all, install, uninstall, clean, dist, distcheck, distclean, tags, maintainerclean. If configure or make did it, make distclean undoes it. If make did it, make clean undoes it. If make install did it, make uninstall undoes it. If you did it, make maintainer-clean undoes it.