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

📄 6.htm

📁 makefile文件详解
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>20CN网络安全小组--makefile(6) </title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="keywords" content="黑客,安全,网络,编程,黑客软件,安全软件,hacker,UNIX,Linux,FreeBSD"><meta name="description" content="黑客,安全,网络,编程,黑客软件,安全软件,hacker,UNIX,Linux,FreeBSD"><STYLE type=text/css>A {  font-size: 12px; color: 004d9c; TEXT-DECORATION: none}A:visited { TEXT-DECORATION: none}A:active {  TEXT-DECORATION: none}A:hover {  color: #0000FF; text-decoration: none}.9p {  font-size: 12px }.10p {  font-size: 10pt}.9pten {  font-size: 9pt; font-family: "verdana, Helvetica, Times New Roman, sans-serif"}.textinfo {  font-size: 10.5pt; font-family: "verdana, Helvetica, Times New Roman, 宋体, sans-serif"; line-height: 21px ;letter-spacing:}.code {  font-size: 10pt; font-family: "Courier New,  sans-serif"}</STYLE></head><body bgcolor="#FFFFFF" leftmargin="0" topmargin="4" marginwidth="0" marginheight="0"><div align="center"><table width="768" border="1" bordercolor="#FFFFFF" class="9p"> <tr> <td bordercolor="ffffff" colspan="2" bgcolor="ffffff" align="right">     <a href="http://www.20cn.net/aboutus.html">关于我们</a>   | <a href="http://www.20cn.net/joinus.html">加入我们</a>   | <a href="http://www.20cn.net/help.html">网站结构</a>   | <a href="http://www.20cn.net/linkus.html">交换连接</a>   | <a href="mailto:webmaster@20cn.com">联系我们</a> </td> </tr></table><table width="768" border="1" height="51" bordercolor="5296ff" class="9p">  <tr>    <td height="43" bordercolor="ffffff" colspan="2" bgcolor="ffffff">      <table width="100%" bgcolor="ffffff" bordercolor="ffffff" cellpadding="0" cellspacing="0" border="0">        <tr>          <td ><img src="http://www.20cn.net/images/logo.jpg"></td>          <td width="%100" height="40" align="center"><img src="http://www.20cn.net/images/banner.gif"></td>        </tr>      </table>    </td>  </tr>  <tr>    <td width="559" height="23" align="center">          | <a href="http://www.20cn.net/ns/html/">最新文档</a>          | <a href="http://www.20cn.net/ns/wz/">技术文摘</a>          | <a href="http://www.20cn.net/ns/ld/">安全漏洞</a>          | <a href="http://www.20cn.net/ns/cn/">菜鸟乐园</a>          | <a href="http://www.20cn.net/ns/hk/">黑客进阶</a>          | <a href="http://www.20cn.net/netdemon/">技术文库</a>          | <a href="http://www.20cn.net/download/" target="_blank">软件下载</a>          | <a href="http://www.20cn.net/club/" target="_blank">技术论坛</a>          |    </td>    <td width="193" bgcolor="adcbef" height="23">      <div align="center">        <script language=JavaScript src="http://www.20cn.net/date.js"></script>      </div>    </td>  </tr></table><!-- End Herder -->  <table width="768" border="1" bordercolor="5296ff">    <tr>      <td colspan="3" bordercolor="#FFFFFF">        <table width="100%" border="0" cellspacing="0" class="9p">          <tr>            <td width="74%"> 您现在的位置 >> <a href="http://www.20cn.net/">返回首页</a></td>            <td width="26%" align="center">		文档发表时间:2002-08-01            </td>        </table>      </td>    </tr>    <tr valign="top">      <td colspan="3" bordercolor="#FFFFFF">    <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#adcbef" bordercolor="#adcbef">     <tr bgcolor="#F7F7F7" valign="top">      <td class="9p">       <table border="0" cellpadding="0" cellspacing="10" width="100%">        <tr>         <td class="textinfo">          <p>makefile(6)  <span style="font-size: 9pt">(阅览<font color="#FF0000">                <script src="http://www.20cn.net/cgi-bin/ns/count.cgi?id=20020801151114"></script>                </font>次)</span></p>              <p>makefile(6) <br><br> <br>作者:ermiao     发表时间:2002/07/09 09:17am<br> <br>标  题: 关于makefile(6) <br>2.4 隐含规则 (Implicit Rules) <br>请注意,在上面的例子里,几个产生 .o 文件的命令都是一样的。 都是从 .c 文件和 相关文件里产生 .o 文件,这是一个标准的步 骤。其实 make 已经知道怎么做——它 有一些叫做隐含规则的内 置的规则,这些规则告诉它当你没有给出某些命令的时候, 应该 怎么办。如果你把生成 foo.o 和 bar.o 的命令从它们的规则中删除, make 将会查找它的隐含 规则,然后会找到一个适当的命令。它的命令会 使用一些变量,因此你可以按照你的 想法来设定它:它使用变量 CC 做为编译器(象我们在前面的例子),并且传递变量 CFLAGS (给 C 编译器,C++ 编译器用 CXXFLAGS ),CPPFLAGS ( C 预 处理器旗 标), TARGET_ARCH (现在不用考虑这个),然后它加 入旗标 '-c' ,后面跟变量 $&lt; (第一个依靠名),然后是旗 标 '-o' 跟变量 $@ (目的文件名)。<br>一个C编译的 具体命令将 会是:$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $&lt; -o $@ 当然你可以按照你自己的需要来定义这些变量。这就是为什么用 gcc 的 -M 或 -MM 开 关输出的码可以直接用在一个 makefile 里。 2.5 假象目的 (Phony Targets) 假设你的一个项目最后需要产生两个可执行文件。你的主要目标 是产生两个可执行文 件,但这两个文件是相互独立的——如果一 个文件需要重建,并不影响另一个。你可 以使用“假象目的”来 达到这种效果。一个假象目的跟一个正常的目的几乎是一样 的, 只是这个目的文件是不存在的。因此, make 总是会假设它需要 被生成,当把它 的依赖文件更新后,就会执行它的规则里的命令 行。 如果在我们的 makefile 开始处输入: <br>all : exec1 exec2 其中 exec1 和 exec2 是我们做为目的的两个可执行文件。 make 把这个 'all' 做为 它的主要目的,每次执行时都会尝试把 'all' 更新。但既然这行规则里没有哪个命令 来作用在一个叫 'all' 的 实际文件(事实上 all 并不会在磁碟上实际产生),所以 这个规 则并不真的改变 'all' 的状态。可既然这个文件并不存在,所以 make 会尝试 更新 all 规则,因此就检查它的依靠 exec1, exec2 是否需要更新,如果需要,就把 它们更新,从而达到我们的目的。 假象目的也可以用来描述一组非预设的动作。例如,你想把所有由 make 产生的文件删 除,你可以在 makefile 里设立这样一个规则: <br>veryclean : <br>rm *.o <br>rm myprog <br>前提是没有其它的规则依靠这个 'veryclean' 目的,它将永远 不会被执行。但是,如果你明确的使用命令 'make veryclean' , make 会把这个目的做为它的主要目标,执行那些 rm 命令。如果你的磁碟上存在一个叫 veryclean 文件,会发生什么事?这 时因为在这个规则里 没有任何依靠文件,所以这个目的文件一定是 最新的了(所有的依靠文件都已经是最 新的了),所以既使用户明 确命令 make 重新产生它,也不会有任何事情发生。解决 方法是标 明所有的假象目的(用 .PHONY),这就告诉 make 不用检查它们 是否存在 于磁碟上,也不用查找任何隐含规则,直接假设指定的目 的需要被更新。在 makefile 里加入下面这行包含上面规则的规则: <br>..PHONY : veryclean <br>就可以了。注意,这是一个特殊的 make 规则,make 知道 .PHONY 是一个特殊目的, 当然你可以在它的依靠里加入你想用的任何假象 目的,而 make 知道它们都是假象目 的。 <br><br> <br> <br><br>--------------------------------------------------------------------------------<br> <br></p>              <p align="right"><a href="javascript:history.go(-1)" class="textinfo">返回            </a></p>         </td>        </tr>       </table>      </td>     </tr>    </table>   </td>  </tr> </table> <!-- Start Fooder --><p align="center" class="9p">建议您使用<font face="Verdana, Arial, Helvetica, sans-serif">IE</font>浏览器<font color="#FF0000" face="Verdana, Tahoma, Times New Roman, 宋体, MS Sans Serif">800×600</font>以上分辩率浏览以获最佳效果<br><br><font face="Verdana, Arial, Helvetica, sans-serif">20CN</font>网络安全小组版权所有<br><font face="Verdana, Tahoma, Times New Roman, 宋体, MS Sans Serif">Copyright &copy;2000-2003 20CN Network Security Group. All Rights Reserved.</font><br>如有任何问题及建议请写信至<a href="mailto:webmaster@20cn.net"><font color="#000000" face="Verdana, Tahoma, Times New Roman, 宋体, MS Sans Serif">webmaster@20cn.net</font></a></p><p align="center" class="9p"><img src="http://www.20cn.net/images/powerd-4.4bsd.gif" border="0"></p><p align="center" class="9p"><script language="JavaScript">var urodz = new Date("DEC 31, 2000");var now = new Date();var ile = now.getTime() - urodz.getTime();var dni = Math.floor(ile / (1000 * 60 * 60 * 24)) + 1;if (dni > 0)   document.write("建站第 " + dni + " 天")else    document.write("建站第 " + dni + " 天");</script><br></p></div></body></html>

⌨️ 快捷键说明

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