⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;reden&nbsp;(Offer&nbsp;快快来啊&nbsp;~!),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;&nbsp;轻轻松松产生&nbsp;Makefile&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Tue&nbsp;Mar&nbsp;23&nbsp;12:25:33&nbsp;1999)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;轻轻松松产生&nbsp;Makefile&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;许明彦&nbsp;&lt;<A HREF="mailto:myhsu@cyberdude.com>">myhsu@cyberdude.com></A>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;February&nbsp;11,&nbsp;1999&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Abstract:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在&nbsp;Unix&nbsp;上写程式的人大概都碰过&nbsp;Makefile,尤其是用&nbsp;C&nbsp;来开发程式的&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;人。用&nbsp;make&nbsp;来开发和编译程式的确很方便,可是要写出一个&nbsp;Makefile&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;就不简单了。偏偏介绍&nbsp;Makefile&nbsp;的文件不多,GNU&nbsp;Make&nbsp;那份印出来要几&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;百页的文件,光看完&nbsp;Overview&nbsp;就快阵亡了,难怪许多人闻&nbsp;Unix&nbsp;色变。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;本文将介绍如何利用&nbsp;GNU&nbsp;Autoconf&nbsp;及&nbsp;Automake&nbsp;这两套软体来协助我们&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;『自动』产生&nbsp;Makefile&nbsp;档,并且让开发出来的软体可以像&nbsp;Apache,&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;MySQL&nbsp;和常见的&nbsp;GNU&nbsp;软体一样,只要会&nbsp;``./configure'',&nbsp;``make'',&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;``make&nbsp;install''&nbsp;就可以把程式安装到系统中。如果您有心开发&nbsp;Open&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Source&nbsp;的软体,或只是想在&nbsp;Unix&nbsp;系统下写写程式。希望这份介绍文件能&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;帮助您轻松地进入&nbsp;Unix&nbsp;Programming&nbsp;的殿堂。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;简介&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Makefile&nbsp;基本上就是『目标』(target),&nbsp;『关连』(dependencies)&nbsp;和&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;『动作』三者所组成的一连串规则。而&nbsp;make&nbsp;就会根据&nbsp;Makefile&nbsp;的规则&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;来决定如何编译&nbsp;(compile)&nbsp;和连结&nbsp;(link)&nbsp;程式。实际上,make&nbsp;可做的&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;不只是编译和连结程式,例如&nbsp;FreeBSD&nbsp;的&nbsp;port&nbsp;collection&nbsp;中,&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Makefile&nbsp;还可以做到自动下载原始程式套件,解压缩&nbsp;(extract)&nbsp;,修补&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(patch),设定,然後编译,安装至系统中。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Makefile&nbsp;基本构造虽然简单,但是妥善运用这些规则就也可以变出许多不&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;同的花招。却也因此,许多刚开始学习写&nbsp;Makefile&nbsp;时会感到没有规范可&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;循,每个人写出来的&nbsp;Makefile&nbsp;长得都不太一样,不知道从何下手,而且&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;常常会受限於自己的开发环境,只要环境变数不同或路径改一下,可能&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Makefile&nbsp;就得跟着修改。虽然有&nbsp;GNU&nbsp;Makefile&nbsp;Conventions&nbsp;(GNU&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Makefile&nbsp;惯例)&nbsp;订出一些使用&nbsp;GNU&nbsp;程式设计时撰写&nbsp;Makefile&nbsp;的一些标&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;准和规范,但是内容很长而且很复杂,&nbsp;并且经常做些调整,为了减轻程式&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;设计师维护&nbsp;Makefile&nbsp;的负担,因此有了&nbsp;Automake。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;程式设计师只需写一些预先定义好的巨集&nbsp;(macro),交给&nbsp;Automake&nbsp;处理&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;後会产生一个可供&nbsp;Autoconf&nbsp;使用的&nbsp;Makefile.in&nbsp;档。再配合利用&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Autoconf&nbsp;产生的自动设定档&nbsp;configure&nbsp;即可产生一份符合&nbsp;GNU&nbsp;Makefile&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;惯例的&nbsp;Makeifle&nbsp;了。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;上路之前&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在开始试着用&nbsp;Automake&nbsp;之前,请先确认你的系统已经安装以下的软体:&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;GNU&nbsp;Automake&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;GNU&nbsp;Autoconf&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;GNU&nbsp;m4&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;perl&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;5.&nbsp;GNU&nbsp;Libtool&nbsp;(如果你需要产生&nbsp;shared&nbsp;library)&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我会建议你最好也使用&nbsp;GNU&nbsp;C/C++&nbsp;编译器&nbsp;、GNU&nbsp;Make&nbsp;以及其它&nbsp;GNU&nbsp;的&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;工具程式来做为开发的环境,这些工具都是属於&nbsp;Open&nbsp;Source&nbsp;Software&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;不仅免费而且功能强大。如果你是使用&nbsp;Red&nbsp;Hat&nbsp;Linux&nbsp;可以找到所有上述&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;软体的&nbsp;rpm&nbsp;档,FreeBSD&nbsp;也有现成的&nbsp;package&nbsp;可以直接安装,或着你也&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;可以自行下载这些软体的原始档回来&nbsp;DIY。以下的范例是在&nbsp;Red&nbsp;Hat&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;5.2&nbsp;+&nbsp;CLE2&nbsp;的环境下所完成的。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;一个简单的例子&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Automake&nbsp;所产生的&nbsp;Makefile&nbsp;除了可以做到程式的编译和连结,也已经把&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如何产生程式文件&nbsp;(如&nbsp;manual&nbsp;page,&nbsp;info&nbsp;档及&nbsp;dvi&nbsp;档)&nbsp;的动作,还有&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;把原始程式包装起来以供散 的动作都考虑进去了,所以原始程式所存放&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;的目录架构最好符合&nbsp;GNU&nbsp;的标准惯例,接下来我拿&nbsp;hello.c&nbsp;来做为例&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;子。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在工作目录下建立一个新的子目录&nbsp;``devel'',再在&nbsp;devel&nbsp;下建立一个&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;``hello''&nbsp;的子目录,这个目录将作为我们存放&nbsp;hello&nbsp;这个程式及其相关&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;档案的地方:&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&nbsp;mkdir&nbsp;devel&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&nbsp;cd&nbsp;devel&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&nbsp;mkdir&nbsp;hello&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&nbsp;cd&nbsp;hello&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;用编辑器写个&nbsp;hello.c&nbsp;档,&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&lt;stdio.h&gt;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;main(int&nbsp;argc,&nbsp;char**&nbsp;argv)&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(``Hello,&nbsp;GNU!\n'');&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;接下来就要用&nbsp;Autoconf&nbsp;及&nbsp;Automake&nbsp;来帮我们产生&nbsp;Makefile&nbsp;档了,&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;用&nbsp;autoscan&nbsp;产生一个&nbsp;configure.in&nbsp;的雏型,执行&nbsp;autoscan&nbsp;後会产&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -