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

📄 048.htm

📁 尝试使用有意义的结构与组织
💻 HTM
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->Linux HowTo 中译版-->Glibc 2 HOWTO 中文版: 使用非主要 libc 编译程式</TITLE>
<META NAME="keywords" CONTENT=" Linux HowTo 中译版 Glibc 2 HOWTO 中文版: 使用非主要 libc 编译程式">
<META NAME="description" CONTENT=" - Linux HowTo 中译版 - Glibc 2 HOWTO 中文版: 使用非主要 libc 编译程式">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%"  bgcolor="#e0e0e0"><strong><A HREF="049.htm">后一页</A><BR>
<A HREF="047.htm">前一页</A><BR>

<A HREF="index.html">回目录</A><BR>
<A HREF="../../../../index.htm">回首页</A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">Glibc 2 HOWTO 中文版: 使用非主要 libc 编译程式</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
姓名:Eric Green,<br>
Email:thrytis@imaxx.net<br>
地址 :<br>
转摘 :http://member.netease.com/</p>
<BR>
<BR>
<hr SIZE="0">
<BR>
<p><br>
<br>
6. 使用非主要 libc 编译程式 <br>
有些时後你会想要使用不同的 library
来编译你的程式,这一节会解释如何达成这个目的。我会使用在前两节中所使用的目录与安装名称,记得要改变这些名称以符合你的设定。
<br>
<br>
6.1. 一个关於使用非主要 libc 的警告 <br>
在你开使编译任何会在开机时用到的程式之前,假如程式是动态连结,并且是在
non-root partition 被 mount 之前使用的话,那所有连结用的 library
都必须在 root partition 上。在前面的安装程序里,我们将 glibc
安装成主要的 library,而旧的 library 仍然保留在 /lib, /lib 会在 root
partition
上,也就是说,所有在开机时会用到的程式都能正常工作。然而,若你的
/usr 是在不同的 partition 上,且把 glibc 当成测试用的 library,安装在
/usr/i486-linuxglibc2,那所有你用 glibc 编译的程式都将不能使用,直到
/usr 已经被 mount 为止。 <br>
<br>
6.2. 用测试安装的 glibc 编译程式 <br>
要用测试安装的 glibc 编译程式,你必须要将 include 录路径重设成
glibc 的 include 路径。指定 ``-nostdinc'' 会取消正常 include 路径,而
``-I/usr/i486-linuxglibc2/include'' 则会指到 glibc 的 include
目录,你也必须要只纸指定 gcc 标准 include 目录,通常是
/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include。 (这里假设你安装测试的
library 在 i486-linuxglibc2,而 gcc 的版本是 2.7.2.2) <br>
<br>
要用测试安装的 glibc 来连结,你必须指明 gcc 设定,这是由 ``-b
i486-linuxglibc2'' 这选项来达成。 <br>
<br>
对大部份的程式,你可以简单的将其加入 makefile 的 $CFLAGS 与 $LDFLAGS
选项中: <br>
<br>
CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include
-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -b i486-linuxglibc2 <br>
LDFLAGS = -b i486-linuxglibc2 <br>
<br>
<br>
假如你使用 configure 这个 script,在执行 configure 之前,定义 shell 变数
$CFLAGS 与 $LDFLAGS (在 csh/tcsh 下用 env/setenv 在 sh/bash/其它之下用
set/export)。这样产生的 makefile 应该会包含正确的 $CFLAGS 与 $LDFLAGS。不过并非所有的
configure scrpt 都会去取得这些变数,所以在执行完 configure
之後,你还是要简检查一下 makefile,假如需要的话,手动修改它。 <br>
<br>
假如你所要编译的程式只叫 gcc, (而非直接呼叫 cpp 或 binutils)
你可以使用以下的 script,省去每次指定所有选项的麻烦: <br>
<br>
#!/bin/bash <br>
/usr/bin/gcc -b i486-linuxglibc2 -nostdinc \ <br>
-I/usr/i486-linuxglibc2/include \ <br>
-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include &quot;$@&quot; <br>
<br>
<br>
编译时你可以使用这个 script 而不是 gcc。 <br>
<br>
6.3. 当 glibc 是主要 library 时用 libc 5 编译程式 <br>
当你已经将 glibc 安装成主要的 library 之後,又想用旧的 library
来编译程式的时後,你必须将 include 路径重设成旧的路径。指定
``-nostdinc'' 将会使预设的路径无效,而 ``-I/usr/i486-linuxlibc5/include''
会将 include 的路径指到旧 library 的 include 路径,你也必须要指定
``-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include'' 以含入 gcc 所需的 include
档。注意要视你新的目录与 gcc 版本来调整这些路径。 <br>
<br>
要用旧的 libc 来做连结,你必须指定 gcc 所用的架构。这是由 ``-b
i486-linuxlibc5'' 这个选项所指定的。 <br>
<br>
对大部份的程式,你可以简单的将这些选项加入到 makefile 里的 $CFLAGS
与 $LDFLAGS 选项里: <br>
<br>
CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include
-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5 <br>
LDFLAGS = -b i486-linuxlibc5 <br>
<br>
<br>
假如你使用 configure 这个 script,在执行 configure 之前,定义 shell 变数
$CFLAGS 与 $LDFLAGS (在 csh/tcsh 下用 env/setenv 在 sh/bash/其它之下用
set/export)。这样产生的 makefile 应该会包含正确的 $CFLAGS 与 $LDFLAGS。不过并非所有的
configure scrpt 都会去取得这些变数,所以在执行完 configure
之後,你还是要简检查一下 makefile,假如需要的话,手动修改它。 <br>
<br>
假如你所要编译的程式只叫 gcc, (而非直接呼叫 cpp 或 binutils)
你可以使用以下的 script,省去每次指定所有选项的麻烦: <br>
<br>
#!/bin/bash <br>
/usr/bin/gcc -b i486-linuxlibc5 -nostdinc \ <br>
-I/usr/i486-linuxlibc5/include \ <br>
-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include &quot;$@&quot; <br>
<br>
<br>
编译时你可以使用这个 script 而不是 gcc。 <br>
</p>
<BR>
<hr color="#EE9B73" size="1" width="94%">

</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%"  bgcolor="#e0e0e0"><strong><A HREF="049.htm">后一页</A><BR>
<A HREF="047.htm">前一页</A><BR>

<A HREF="index.html">回目录</A><BR>
<A HREF="../../../../index.htm">回首页</A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>

⌨️ 快捷键说明

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