<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6277216cd7996104df46e73a/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6277216cd7996104df46e73a/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">GNU<span class="ff2 ls1"></span><span class="ls2">autotools<span class="ff2 ls1"></span></span></div><div class="t m0 x2 h3 y2 ff3 fs1 fc0 sc0 ls3 ws0">1.<span class="ff4 ls1"> <span class="_ _0"> </span><span class="ff5 sc1 ls4">介绍</span></span><span class="ls5"> <span class="_ _1"> </span> </span></div><div class="t m0 x3 h4 y3 ff5 fs2 fc0 sc0 ls1 ws0">大部分时候,<span class="_ _2"></span>你从网上下载了一个开放源代码的软件,<span class="_ _2"></span>在解压后,<span class="_ _2"></span>你一般会敲入以</div><div class="t m0 x4 h5 y4 ff5 fs2 fc0 sc0 ls1 ws0">下三个命令来编译和安装你的程序:<span class="ff6"> </span></div><div class="t m0 x5 h5 y5 ff6 fs2 fc0 sc0 ls6 ws0">1)<span class="ff7 ls1"> <span class="_ _3"> </span></span><span class="ls7">./configure </span></div><div class="t m0 x5 h5 y6 ff6 fs2 fc0 sc0 ls6 ws0">2)<span class="ff7 ls1"> <span class="_ _3"> </span></span><span class="ls8">make </span></div><div class="t m0 x5 h5 y7 ff6 fs2 fc0 sc0 ls6 ws0">3)<span class="ff7 ls1"> <span class="_ _3"> </span></span><span class="ls9 ws1">make install </span></div><div class="t m0 x3 h5 y8 ff5 fs2 fc0 sc0 ls1 ws0">其中,<span class="_ _4"></span><span class="ff6 ls9">configure<span class="_ _1"> </span><span class="ff5 ls1">脚本分析你的系统以找到合适的工具和库,<span class="_ _4"></span><span class="ff6 lsa">make<span class="_ _1"> </span><span class="ff5 ls1">是真正用来编</span></span></span></span></div><div class="t m0 x4 h5 y9 ff5 fs2 fc0 sc0 ls1 ws0">译构建软件的工具,<span class="ff6 lsb ws2">make install<span class="_"> </span></span>来<span class="_ _5"></span>安装软件。<span class="ff6"> </span></div><div class="t m0 x3 h6 ya ff5 fs2 fc0 sc0 ls1 ws0">在开放源代码世界,<span class="_ _2"></span><span class="ff3 lsb">configure<span class="_ _1"> </span><span class="ff5 ls1">脚本获得了广泛的使用,<span class="_ _4"></span>它使从源代码安装软件变</span></span></div><div class="t m0 x4 h5 yb ff5 fs2 fc0 sc0 ls1 ws0">得非常容易,本文主要就是介绍如何使用<span class="_ _1"> </span><span class="ff6 lsc ws3">GNU autotools</span>,以便使你能够以上面这种</div><div class="t m0 x4 h5 yc ff5 fs2 fc0 sc0 ls1 ws0">方式来编译和安装你的程序。<span class="ff6 lsd"> </span></div><div class="t m0 x2 h3 yd ff3 fs1 fc0 sc0 ls3 ws0">2.<span class="ff4 ls1"> <span class="_ _0"> </span><span class="ff5 sc1 ls4">什么是<span class="_ _6"> </span></span></span><span class="lse ws4">GNU autotools </span></div><div class="t m0 x3 h5 ye ff6 fs2 fc0 sc0 lsf ws5">GNU autotools<span class="_ _7"> </span><span class="ff5 ls1 ws0">主要包括下面三个工具:<span class="ff6"> </span></span></div><div class="t m0 x4 h5 yf ff8 fs2 fc0 sc0 ls1 ws0">z<span class="ff7"> <span class="_ _8"> </span><span class="ff6 ls10 ws6">Autoconf – <span class="_"> </span></span><span class="ff5">这个工具用来生成<span class="_ _1"> </span><span class="ff6 ls9">configure<span class="_"> </span></span>脚本。<span class="_ _9"></span>就像前面提到的,<span class="_ _9"></span>这个脚本主要</span></span></div><div class="t m0 x3 h5 y10 ff5 fs2 fc0 sc0 ls1 ws0">用来分析你的系统以找到合适的工具和库。譬如:你的系统的<span class="_ _1"> </span><span class="ff6">C<span class="_ _1"> </span></span>编译器是“<span class="ff6 ls11">cc</span>”</div><div class="t m0 x3 h5 y11 ff5 fs2 fc0 sc0 ls1 ws0">还是“<span class="ff6 ls6">gcc</span>”?<span class="ff6"> </span></div><div class="t m0 x4 h5 y12 ff8 fs2 fc0 sc0 ls1 ws0">z<span class="ff7"> <span class="_ _8"> </span><span class="ff6 ls12 ws7">Automake – </span><span class="ff5">这个工具用来生成<span class="_ _6"> </span><span class="ff6 ls13">Makefiles</span>。它需要使用到<span class="_ _6"> </span><span class="ff6 ls14">Autoconf<span class="_"> </span></span>提供的信</span></span></div><div class="t m0 x3 h5 y13 ff5 fs2 fc0 sc0 ls1 ws0">息。<span class="_ _9"></span>譬如,<span class="_ _4"></span>如果<span class="_ _1"> </span><span class="ff6 ls15">Autoconf<span class="_"> </span></span>检测到你的系统使用<span class="_ _9"></span>“<span class="ff6 ls6">gcc</span>”<span class="_ _a"></span><span class="ls16">,那<span class="_ _b"> </span><span class="ff6 ls1">Makefile<span class="_"> </span><span class="ff5">就使<span class="_ _5"></span>用<span class="_ _7"> </span><span class="ff6 ls6">gcc</span></span></span></span></div><div class="t m0 x3 h5 y14 ff5 fs2 fc0 sc0 ls1 ws0">作为<span class="_ _1"> </span><span class="ff6">C<span class="_ _1"> </span></span>编译器。反之,如果找到“<span class="ff6 ls11">cc</span>”<span class="_ _a"></span>,那就使用“<span class="ff6 ls11">cc</span>”<span class="_ _c"></span>。<span class="ff6"> </span></div><div class="t m0 x4 h5 y15 ff8 fs2 fc0 sc0 ls1 ws0">z<span class="ff7"> <span class="_ _8"> </span><span class="ff6 ls17 ws8">Libtools – <span class="_ _7"> </span></span><span class="ff5">这个工具创建共享库。它是平台无关的。<span class="ff6"> </span></span></span></div><div class="t m0 x2 h3 y16 ff3 fs1 fc0 sc0 ls3 ws0">3.<span class="ff4 ls1"> <span class="_ _0"> </span><span class="ff5 sc1 ls4">为“</span></span><span class="ls18">Hello<span class="ff5 sc1 ls1">,</span><span class="ls5">world<span class="ff5 sc1 ls19">”添加<span class="_ _6"> </span></span><span class="ls1">Autoconf </span></span></span></div><div class="t m0 x4 h5 y17 ff6 fs2 fc0 sc0 ls6 ws0">1)<span class="ff7 ls1"> <span class="_ _d"> </span><span class="ff5">创建一个“</span></span><span class="ls1a">Hello<span class="ff5 ls1">,</span><span class="ls1b">world<span class="ff5 ls1">!<span class="_ _a"></span>”<span class="ff6"> </span></span></span></span></div><div class="t m0 x3 h5 y18 ff8 fs2 fc0 sc0 ls1 ws0">z<span class="ff7"> <span class="_ _8"> </span><span class="ff5">写一个简单的“<span class="ff6 lsf">Hello</span>,<span class="ff6 ls17">world</span>!<span class="_ _c"></span>”程序<span class="ff6"> </span></span></span></div><div class="t m0 x6 h5 y19 ff6 fs2 fc0 sc0 ls1 ws0"> </div><div class="t m0 x3 h5 y1a ff8 fs2 fc0 sc0 ls1 ws0">z<span class="ff7"> <span class="_ _8"> </span><span class="ff5">写一个简单的<span class="_ _1"> </span><span class="ff6 ls1c">Makefile </span></span></span></div><div class="t m0 x7 h5 y1b ff6 fs2 fc0 sc0 ls1 ws0"> </div><div class="t m0 x3 h5 y1c ff8 fs2 fc0 sc0 ls1 ws0">z<span class="ff7"> <span class="_ _8"> </span><span class="ff5">执行命令<span class="ff6"> </span></span></span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>