亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? autobook_33.html

?? Autoconf使用手冊
?? HTML
字號:
<HTML><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><!-- Created on September, 12  2004 by texi2html 1.64 --><!-- Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)            Karl Berry  <karl@freefriends.org>            Olaf Bachmann <obachman@mathematik.uni-kl.de>            and many others.Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> --><HEAD><TITLE>Autoconf, Automake, and Libtool: What to check for</TITLE><META NAME="description" CONTENT="Autoconf, Automake, and Libtool: What to check for"><META NAME="keywords" CONTENT="Autoconf, Automake, and Libtool: What to check for"><META NAME="resource-type" CONTENT="document"><META NAME="distribution" CONTENT="global"><META NAME="Generator" CONTENT="texi2html 1.64"><script language="Javascript"><!--    // Check the browser version.    function checkVersion() {      if (navigator.appVersion.charAt(0)>=3) return true;      if (navigator.appVersion.charAt(0)>=4) return true;      else return false;    }      if (checkVersion()) {             homeon = new Image();             homeon.src = "homeon.png";             homeoff = new Image();             homeoff.src = "home.png";             tocon = new Image();             tocon.src = "tocon.png";             tocoff = new Image();             tocoff.src = "toc.png";             indexon = new Image();             indexon.src = "indexon.png";             indexoff = new Image();             indexoff.src = "index.png";             helpon = new Image();             helpon.src = "helpon.png";             helpoff = new Image();             helpoff.src = "help.png";             backon = new Image();             backon.src = "backon.png";             backoff = new Image();             backoff.src = "back.png";             forwardon = new Image();             forwardon.src = "forwardon.png";             forwardoff = new Image();             forwardoff.src = "forward.png";             prevon = new Image();             prevon.src = "prevon.png";             prevoff = new Image();             prevoff.src = "prev.png";             nexton = new Image();             nexton.src = "nexton.png";             nextoff = new Image();             nextoff.src = "next.png";             upon = new Image();             upon.src = "upon.png";             upoff = new Image();             upoff.src = "up.png";         }     function img_act(imgName) {             if (checkVersion()) {             imgOn = eval(imgName + "on.src");             document [imgName].src = imgOn;             }     }     function img_inact(imgName) {             if (checkVersion()) {             imgOff = eval(imgName + "off.src");             document [imgName].src = imgOff;             }     }// --></SCRIPT></HEAD><BODY LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#6688AA" VLINK="#336688" ALINK="#808080"><A NAME="SEC33"></A><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10><TR VALIGN="TOP"><TD ALIGN="MIDDLE" WIDTH=50 BGCOLOR="#e6e6e6"><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_32.html#SEC32" onMouseover="img_act('prev')" onMouseout="img_inact('prev')"><IMG SRC="prev.png" BORDER="0" ALT="Back: Ordering Tests" ALIGN="MIDDLE" NAME="prev"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_34.html#SEC34" onMouseover="img_act('next')" onMouseout="img_inact('next')"><IMG SRC="next.png" BORDER="0" ALT="Forward: Using Configuration Names" ALIGN="MIDDLE" NAME="next"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_34.html#SEC34" onMouseover="img_act('back')" onMouseout="img_inact('back')"><IMG SRC="back.png" BORDER="0" ALT="FastBack: Using Configuration Names" ALIGN="MIDDLE" NAME="back"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_29.html#SEC29" onMouseover="img_act('up')" onMouseout="img_inact('up')"><IMG SRC="up.png" BORDER="0" ALT="Up: Writing configure.in" ALIGN="MIDDLE" NAME="up"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_35.html#SEC35" onMouseover="img_act('forward')" onMouseout="img_inact('forward')"><IMG SRC="forward.png" BORDER="0" ALT="FastForward: Introducing GNU Automake" ALIGN="MIDDLE" NAME="forward"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook.html#SEC_Top" onMouseover="img_act('home')" onMouseout="img_inact('home')"><IMG SRC="home.png" BORDER="0" ALT="Top: Autoconf, Automake, and Libtool" ALIGN="MIDDLE" NAME="home"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_toc.html#SEC_Contents" onMouseover="img_act('toc')" onMouseout="img_inact('toc')"><IMG SRC="toc.png" BORDER="0" ALT="Contents: Table of Contents" ALIGN="MIDDLE" NAME="toc"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_285.html#SEC285" onMouseover="img_act('index')" onMouseout="img_inact('index')"><IMG SRC="index.png" BORDER="0" ALT="Index: Index" ALIGN="MIDDLE" NAME="index"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_abt.html#SEC_About" onMouseover="img_act('help')" onMouseout="img_inact('help')"><IMG SRC="help.png" BORDER="0" ALT="About: About this document" ALIGN="MIDDLE" NAME="help"></A></TD></TR></TABLE></TD><TD ALIGN="LEFT"><H2> 6.4 What to check for </H2><!--docid::SEC33::--><P>Deciding what to check for is really the central part of writing<TT>`configure.in'</TT>.  Once you've read the Autoconf reference manual,the "how"s of writing a particular test should be fairly clear.  The"when"s might remain a mystery -- and it's just as easy to check for toomany things as it is to check for too few.</P><P>One notable area of divergence between various Unix-like systems is thatthe same programs don't exist on all systems, and, even when they do,they don't always work in the same way.  For these problems werecommend, when possible, following the advice of the GNU CodingStandards: use the most common options from a relatively limited set ofprograms.  Failing that, try to stick to programs and options specifiedby POSIX, perhaps augmenting this approach by doing checks for knownproblems on platforms you care about.</P><P>Checking for tools and their differences is usually a fairly small partof a <TT>`configure'</TT> script; more common are checks for functions,libraries, and the like.</P><P>Except for a few core libraries like <TT>`libc'</TT> and, usually,<TT>`libm'</TT> and libraries like <TT>`libX11'</TT> which typically aren'tconsidered system libraries, there isn't much agreement about librarynames or contents between Unix systems.  Still, libraries are easy tohandle, because decisions about libraries almost always only affect thevarious <TT>`Makefile'</TT>s.  That means that checking for another librarytypically doesn't require major (or even, sometimes, any) changes to thesource code.  Also, because adding a new library test has a small impacton the development cycle -- effectively just re-running <TT>`configure'</TT>and then a relink -- you can effectively adopt a lax approach tolibraries.  For instance, you can just make things work on the fewsystems you immediately care about and then handle library changes on anas-needed basis.</P><P>Suppose you do end up with a link problem.  How do you handle it?  Thefirst thing to do is use <CODE>nm</CODE> to look through the system librariesto see if the missing function exists.  If it does, and it is in alibrary you can use then the solution is easy -- just add another<CODE>AC_CHECK_LIB</CODE>.  Note that just finding the function in a libraryis not enough, because on some systems, some "standard" libraries areundesirable; <TT>`libucb'</TT> is the most common example of a library whichyou should avoid.</P><P>If you can't find the function in a system library then you have asomewhat more difficult problem: a non-portable function.  There arebasically three approaches to a missing function.  Below we talk aboutfunctions, but really these same approaches apply, more or less, totypedefs, structures, and global variables.</P><P>The first approach is to write a replacement function and eitherconditionally compile it, or put it into an appropriately-named file anduse <CODE>AC_REPLACE_FUNCS</CODE>.  For instance, Tcl uses<CODE>AC_REPLACE_FUNCS(strstr)</CODE> to handle systems that have no<CODE>strstr</CODE> function.</P><P>The second approach is used when there is a similar function with adifferent name.  The idea here is to check for all the alternatives andthen modify your source to use whichever one might exist.  The idiomhere is to use <CODE>break</CODE> in the second argument to<CODE>AC_CHECK_FUNCS</CODE>; this is used both to skip unnecessary tests andto indicate to the reader that these checks are related.  For instance,here is how <CODE>libgcj</CODE> checks for <CODE>inet_aton</CODE> or<CODE>inet_addr</CODE>; it only uses the first one found:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre>AC_CHECK_FUNCS(inet_aton inet_addr, break)</pre></td></tr></table></P><P>Code to use the results of these checks looks something like:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre>#if HAVE_INET_ATON  ... use inet_aton here#else#if HAVE_INET_ADDR  ... use inet_addr here#else#error Function missing!#endif#endif</pre></td></tr></table></P><P>Note how we've made it a compile-time error if the function does notexist.  In general it is best to make errors occur as early as possiblein the build process.</P><P>The third approach to non-portable functions is to write code such thatthese functions are only optionally used.  For instance, if you arewriting an editor you might decide to use <CODE>mmap</CODE> to map a file intothe editor's memory.  However, since <CODE>mmap</CODE> is not portable, youwould also write a function to use the more portable <CODE>read</CODE>.</P><P>Handling known non-portable functions is only part of the problem,however.  The pragmatic approach works fairly well, but it is somewhatinefficient if you are primarily developing on a more modern system,like GNU/Linux, which has few functions missing.  In this case theproblem is that you might not notice non-portable constructs in yourcode until it has largely been finished.</P><P>Unfortunately, there's no high road to solving this problem.  In theend, you need to have a working knowledge of the range of existing Unixsystems.  Knowledge of standards such as POSIX and XPG can be usefulhere, as a first cut -- if it isn't in POSIX, you should at leastconsider checking for it.  However, standards are not a panacea -- notall systems are POSIX compliant, and sometimes there are bugs in systemsfunctions which you must work around.</P><P>One final class of problems you might encounter is that it is also easyto check for too much.  This is bad because it adds unnecessarymaintenance burden to your program.  For instance, sometimes you'll seecode that checks for <CODE>&#60;sys/types.h&#62;</CODE>.  However, there's no point indoing that -- using this header is mostly portable.  Again, this canonly be addressed by having a practical knowledge, which is only reallypossible by examining your target systems.</P><P><A NAME="Using Configuration Names"></A></TR></TABLE><BR>  <FONT SIZE="-1">This document was generatedby <I>Gary V. Vaughan</I> on <I>September, 12  2004</I>using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html"><I>texi2html</I></A></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品欧美一区二区三区麻豆| 国产精品女主播av| 精品福利在线导航| 亚洲欧美视频在线观看视频| 日日夜夜精品免费视频| 成人高清视频免费观看| 欧美大胆一级视频| 亚洲午夜久久久久久久久电影网| 国产成人在线视频免费播放| 日韩一区二区不卡| 亚洲国产视频直播| 91丨porny丨户外露出| 久久午夜电影网| 免费在线观看日韩欧美| 欧美亚洲精品一区| 最新国产精品久久精品| 国产精品一二一区| 久久久久久久久久看片| 青青青爽久久午夜综合久久午夜| 欧美性猛交一区二区三区精品| 中文字幕人成不卡一区| 国产成人av电影在线观看| 精品欧美一区二区在线观看| 日本美女视频一区二区| 欧美区在线观看| 亚洲高清中文字幕| 在线免费观看视频一区| 亚洲精品免费在线| 色婷婷av一区二区三区gif| 国产精品盗摄一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产人伦精品一区二区| 国产91丝袜在线播放九色| 久久精品人人做人人爽97| 国产黄色精品网站| 国产日韩欧美一区二区三区综合| 国产成人欧美日韩在线电影| 国产欧美日韩不卡免费| 99re热这里只有精品免费视频| 国产精品高潮久久久久无| 99久久精品免费看国产 | 欧美天堂亚洲电影院在线播放| 一区二区三区国产豹纹内裤在线 | 成人性生交大合| 国产精品久久久久久久久久久免费看 | 一区二区三区在线视频免费观看 | 日韩一级二级三级精品视频| 日韩精品欧美精品| 久久嫩草精品久久久久| 成人黄色片在线观看| 亚洲男人天堂av网| 欧美日韩在线免费视频| 免费精品视频在线| 国产欧美精品区一区二区三区| 福利电影一区二区三区| 一区二区三区四区高清精品免费观看| 欧洲国产伦久久久久久久| 琪琪一区二区三区| 欧美国产成人在线| 91国模大尺度私拍在线视频| 日韩国产在线观看一区| 国产夜色精品一区二区av| 91视频精品在这里| 麻豆精品在线观看| 1区2区3区国产精品| 欧美三级电影网| 国产一区二区女| 亚洲第四色夜色| 国产午夜精品久久| 欧美精品在线视频| 国产成人av电影免费在线观看| 亚洲综合精品自拍| 久久九九久久九九| 在线观看免费亚洲| 国产999精品久久久久久| 亚洲va韩国va欧美va| 久久人人97超碰com| 欧美日本一道本在线视频| 成人午夜在线视频| 乱一区二区av| 亚洲国产精品久久久久婷婷884| 欧美精品一区二区三区在线播放| 色天使色偷偷av一区二区| 国产精品996| 免费在线观看精品| 亚洲香蕉伊在人在线观| 欧美激情艳妇裸体舞| 欧美一区二区福利在线| 91成人免费网站| 成人在线视频一区| 久久99精品久久久久久国产越南 | 国产寡妇亲子伦一区二区| 亚洲超碰精品一区二区| 亚洲欧美中日韩| 久久网站最新地址| 欧美一区二区在线免费观看| 色视频一区二区| av电影天堂一区二区在线| 国产精品一二三四区| 国产一区福利在线| 青青草精品视频| 日本不卡免费在线视频| 婷婷亚洲久悠悠色悠在线播放| 一区二区三区小说| 一区二区三区不卡视频在线观看 | 91久久国产综合久久| 色综合视频一区二区三区高清| 国产成人鲁色资源国产91色综| 久久精品国产亚洲aⅴ| 美女脱光内衣内裤视频久久网站| 丝袜美腿亚洲一区| 午夜视频在线观看一区| 亚洲电影一区二区三区| 亚洲制服欧美中文字幕中文字幕| 一区二区三区在线免费| 一区二区三区在线不卡| 亚洲综合免费观看高清完整版在线| 亚洲欧美另类久久久精品2019| 亚洲桃色在线一区| 亚洲伦理在线免费看| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美国产高清| 亚洲一二三区不卡| 青娱乐精品视频在线| 韩国成人福利片在线播放| 国产一区二区美女| 成人免费视频视频在线观看免费| 国产91综合网| 一本色道亚洲精品aⅴ| 欧美亚一区二区| 欧美一级黄色录像| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩一级免费一区| 国产亚洲欧美日韩俺去了| 亚洲欧洲性图库| 亚洲成精国产精品女| 美女视频第一区二区三区免费观看网站| 麻豆成人91精品二区三区| 国产成人8x视频一区二区| 91九色最新地址| 欧美变态口味重另类| 国产精品嫩草影院av蜜臀| 亚洲综合av网| 国产二区国产一区在线观看| 91麻豆精品在线观看| 欧美一区二区三区公司| 国产精品丝袜在线| 丝袜脚交一区二区| 国产成人精品免费网站| 欧美午夜精品一区| 国产视频亚洲色图| 亚洲6080在线| 成人性视频网站| 日韩精品在线一区| 中文字幕制服丝袜一区二区三区 | 欧美一二三四在线| 国产精品少妇自拍| 日韩二区在线观看| 91原创在线视频| www国产成人免费观看视频 深夜成人网| 亚洲欧美日韩系列| 国产精品亚洲专一区二区三区| 欧美午夜一区二区| 国产精品成人一区二区三区夜夜夜 | 国产伦精品一区二区三区免费迷 | 国产精品无人区| 午夜欧美2019年伦理| 成人国产在线观看| 欧美xxxxxxxx| 丝袜国产日韩另类美女| av成人免费在线观看| 久久久三级国产网站| 视频一区二区中文字幕| 色成年激情久久综合| 久久久国际精品| 麻豆成人免费电影| 91麻豆精品国产91久久久更新时间| 日韩美女视频一区| 成人国产精品免费观看动漫| 精品成人a区在线观看| 欧美a一区二区| 欧美日韩高清不卡| 亚洲国产日韩综合久久精品| 色综合天天综合| 国产精品美日韩| 国产中文字幕精品| 亚洲精品一区二区三区四区高清| 美女视频黄久久| 日韩亚洲欧美综合| 日本伊人色综合网| 欧美一区二区三区喷汁尤物| 日本视频在线一区| 日韩欧美激情一区| 青青草成人在线观看| 欧美一卡二卡在线| 免费av成人在线| 欧美不卡视频一区| 国产寡妇亲子伦一区二区| 国产清纯白嫩初高生在线观看91 | 一区二区三区在线视频免费观看|