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

📄 autobook_81.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: Installing an Executable</TITLE><META NAME="description" CONTENT="Autoconf, Automake, and Libtool: Installing an Executable"><META NAME="keywords" CONTENT="Autoconf, Automake, and Libtool: Installing an Executable"><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="SEC81"></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_80.html#SEC80" onMouseover="img_act('prev')" onMouseout="img_inact('prev')"><IMG SRC="prev.png" BORDER="0" ALT="Back: Installing a Library" ALIGN="MIDDLE" NAME="prev"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_82.html#SEC82" onMouseover="img_act('next')" onMouseout="img_inact('next')"><IMG SRC="next.png" BORDER="0" ALT="Forward: Uninstalling" 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_82.html#SEC82" onMouseover="img_act('back')" onMouseout="img_inact('back')"><IMG SRC="back.png" BORDER="0" ALT="FastBack: Uninstalling" ALIGN="MIDDLE" NAME="back"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_68.html#SEC68" onMouseover="img_act('up')" onMouseout="img_inact('up')"><IMG SRC="up.png" BORDER="0" ALT="Up: Introducing GNU Libtool" ALIGN="MIDDLE" NAME="up"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_83.html#SEC83" onMouseover="img_act('forward')" onMouseout="img_inact('forward')"><IMG SRC="forward.png" BORDER="0" ALT="FastForward: Using GNU Libtool" 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> 10.7 Installing an Executable </H2><!--docid::SEC81::--><P>Installing an executable uses exactly the same command line that I usedto install the library earlier:</P><P><TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ libtool cp hello /usr/local/bingcc -o /tmp/libtool-28585/hello main.c /usr/local/lib/libhello.sl \/usr/local/lib/libtrim.sl -Wl,+b -Wl,/usr/local/libcp /tmp/libtool-28585/hello /usr/local/bin/hello$ /usr/local/bin/helloHello, World!</FONT></pre></td></tr></table></P><P>As <CODE>libtool</CODE> said earlier, during the initial linking of the<CODE>hello</CODE> program in the build directory, <CODE>hello</CODE> must berebuilt before installation.  This is a peculiarity of HP-UX (and afew other architectures) which you won't see if you are following theexamples on a GNU/Linux system.  In the shell trace above,<CODE>libtool</CODE> has built an installable version of the<CODE>hello</CODE> program, saving me the trouble of remembering (or worse-- coding for) the particulars of HP-UX, which runs correctly fromthe installed location.</P><P>As a matter of interest, if you look at the attributes of the installedprogram using HP-UX's <CODE>chatr</CODE> command:</P><P><TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ chatr /usr/local/bin/hello/usr/local/bin/hello:          shared executable          shared library dynamic path search:             SHLIB_PATH     disabled  second              embedded path  enabled   first  /usr/local/lib         internal name:             /tmp/libtool-28585/hello         shared library list:             static    /usr/local/lib/libhello.sl.0             static    /usr/local/lib/libtrim.sl.0             dynamic   /lib/libc.1         shared library binding:             deferred ...</FONT></pre></td></tr></table></P><P>You can see that the runtime library search path for the installed<CODE>hello</CODE> program has been set to find the installed<SAMP>`libhello.sl.0'</SAMP> shared archive, preventing it from accidentallyloading a different library (with the same name) from the default loadpath.  This is a feature of <CODE>libtool</CODE>, and a very important oneat that, and although it may not seem like the right way to do thingsinitially, it saves a <STRONG>lot</STRONG> of trouble when you end up withseveral versions of a library installed in several locations, since eachprogram will continue to use the version that it was linked with,subject to library versioning rules, see <A HREF="autobook_91.html#SEC91">11.4 Library Versioning</A>.</P><P><BLOCKQUOTE>Without the help of <CODE>libtool</CODE>, it is very difficult toprevent programs and libraries in the build tree from loading earlier(compatible) versions of a shared archive that were previously installed without an intimate knowledge of the build hosts architecture.  Makingit work portably would be nigh impossible!  You should experiment withchanges to the uninstalled library and satisfy yourself that thepreviously installed program continues to load the installed library atruntime, whereas the uninstalled program picks up the modifications inthe uninstalled version of the library.</BLOCKQUOTE><P>This example introduces the concept of Libtool modes.  Most of the time<CODE>libtool</CODE> can infer a mode of operation from the contents of thecommand line, but sometimes (as in this example) it needs to be told.In <A HREF="autobook_79.html#SEC79">10.5 Executing Uninstalled Binaries</A> we already used<CODE>libtool</CODE> in <EM>execute</EM> mode to run <CODE>gdb</CODE> against anuninstalled binary.  In this example I am telling <CODE>libtool</CODE> thatI want to pass the <CODE>hello</CODE> binary to the <CODE>chatr</CODE>command, particularly since I know that the <TT>`hello'</TT> file is ascript to set the local execution environment before running the realbinary.</P><P>The various modes that <CODE>libtool</CODE> has are described in theLibtool reference documentation, and are listed in the Libtool helptext:</P><P><TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ libtool --help...MODE must be one of the following:      clean           remove files from the build directory      compile         compile a source file into a libtool object      execute         automatically set library path, then run a program      finish          complete the installation of libtool libraries      install         install libraries or executables      link            create a library or an executable      uninstall       remove libraries from an installed directoryMODE-ARGS vary depending on the MODE.  Try `libtool --help --mode=MODE'for a more detailed description of MODE.</FONT></pre></td></tr></table></P><P><A NAME="Uninstalling"></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 + -