?? 048.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 "$@" <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 "$@" <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 + -