?? 046.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->Linux HowTo 中譯版-->Glibc 2 HOWTO 中文版 : 安裝成測試用的 library</TITLE>
<META NAME="keywords" CONTENT=" Linux HowTo 中譯版 Glibc 2 HOWTO 中文版 : 安裝成測試用的 library">
<META NAME="description" CONTENT=" - Linux HowTo 中譯版 - Glibc 2 HOWTO 中文版 : 安裝成測試用的 library">
<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="047.htm">后一頁</A><BR>
<A HREF="045.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 中文版 : 安裝成測試用的 library</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>
4. 安裝成測試用的 library <br>
這一節的內容是關於如何將 glibc 2 安裝成測試用的 library。所有編譯的程式都連結到你目前的
library,除非你給了某些額外的猜參數才會連結到新的 library。由於路徑被編譯到某些檔案中,你也許需要由原始碼來安裝這
library。 <br>
<br>
4.1. 編譯與安裝 <br>
4.1.1. 需求 <br>
<br>
約 150 MB 的磁碟空間 <br>
GNU make 3.75 <br>
gcc >= 2.7.2 (最好是 2.7.2.1) <br>
binutils 2.8.1 (假如是 alpha 你還需要 snapshot) <br>
bash 2.0 <br>
autoconf 2.12 (假如你更動了 configure.in) <br>
texinfo 3.11 <br>
<br>
在一臺安裝有 64MB 記憶體 i586@133 的機器上,編譯完整的 library (包括
add-on) 大約須要 3 小時。而在 i686@200 則須約一個半小時。 <br>
<br>
4.1.2. 解開原始碼 <br>
你必需由 archive 中取出原始碼。如此才能編譯它,最好的方式如下:
<br>
<br>
tar xzf glibc-2.0.5.tar.gz <br>
cd glibc-2.0.5 <br>
cat ../glibc-2.0.5-2.0.5c.diff.gz | gzip -d | patch -p0 <br>
tar xzf ../glibc-linuxthreads-2.0.5.tar.gz <br>
tar xzf ../glibc-crypt-2.0.5.tar.gz <br>
tar xzf ../glibc-localedata-2.0.5.tar.gz <br>
<br>
<br>
這會將 linuxthreads、 crypt 與 localedata 等目錄放至 glibc-2.0.5
的目錄底下,如此 configure 才可以找到這些 add-ons。 <br>
<br>
4.1.3. 設定組態 <br>
在 glibc-2.0.5 的目錄底下,建立一個新的目錄 compile,并且 cd 到 compile
底下,所也的工作都會在這個目錄中完成,這會簡化後續的清除工作。
(發展者似乎并未讓 'make clean' 作得很好) <br>
<br>
mkdir compile <br>
cd compile <br>
<br>
<br>
執行 ../configure。要使用 add-on,你必需用 --enable-add-ons 指定,例如說
--enable-add-ons=linuxthreads,crypt,localedata。 <br>
<br>
你也必需指定要安裝的目錄, /usr/i486-linuxglibc2
是個不錯的選擇,這樣的 configure 命令如下: <br>
<br>
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
<br>
<br>
<br>
<br>
4.1.4. 編譯與安裝 <br>
要編譯與驗證,執行 <br>
<br>
make <br>
make check <br>
<br>
<br>
假如 'make check' 成功了,安裝 library: <br>
make install <br>
<br>
<br>
<br>
4.2. 更新 dynamic loader <br>
<br>
建立連結,從 ld.so 到 /lib/ld-linux.so.2: <br>
ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2 <br>
<br>
<br>
當一個檔案連結時,這個 library
是唯一一個位置固定的。當穩定的版本出現的時後,在 /lib
使用連結也會使得將 glibc 升級為主要 library 時更為輕松。 <br>
修改 /etc/ld.so.conf。你需要增加新的 library
所在的路徑到檔案的最後,這路徑應該是 <prefix>/lib。假如就以上的選擇就應該是
/usr/i486-linuxglibc2/lib。在你修改了 /etc/ld.so.conf 之後,執行: <br>
ldconfig -v <br>
<br>
<br>
<br>
4.3. Configuring for gcc. <br>
安裝的最後一步是更新 /usr/lib/gcc-lib 以使 gcc 知道如何使用新的
library。首先,你須要復制目前的組態,要知道目前的組態 使用 gcc
的 -v 選項: <br>
<br>
% gcc -v <br>
Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs <br>
gcc version 2.7.2.2 <br>
<br>
<br>
這里, i486-unknown-linux 是目前所用的系統, 2.7.2.2
則是目前版本。你需要將 /usr/lib/gcc-lib/<system>
復制到新的測試系統目錄: <br>
cd /usr/lib/gcc-lib/ <br>
cp -r i486-unknown-linux i486-linuxglibc2 <br>
<br>
<br>
到你的新系統目錄以及版本目錄下: <br>
cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2 <br>
<br>
<br>
修改目錄下的 specs。在這檔案,將 /lib/ld-linux.so.1 換成 /lib/ld-linux.so.2,你也必需要移去檔案中所有的
%{...:-lgmon} 表示式,因為 glibc 不使用 gmon 函式庫來做 profile。你可以在
Specs 檔□例 找到一個□例。 <br>
<br>
4.4. 更新標頭檔 links <br>
你需要在你的 include 目錄下建立連結到其它的 include 目錄: <br>
<br>
cd /usr/i486-linuxglibc2/include <br>
ln -s /usr/src/linux/include/linux <br>
ln -s /usr/src/linux/include/asm <br>
ln -s /usr/X11R6/include/X11 <br>
<br>
<br>
也許你有其它的 library,例如說 ncurse,而這些 library
會需要它們自己的標頭檔,你應該從 /usr/include
復制或連結這些檔案。 (有些 library 需要重新用 glibc2 來 compile,在這種情形下,只要編譯并且
install 到 /usr/i486-linuxglibc2) <br>
<br>
4.5. 測試你的安裝 <br>
要測試安裝是否成功,建立一檔案 glibc.c 如下: <br>
<br>
#include <stdio.h> <br>
<br>
main() <br>
{ <br>
printf("hello world!\n"); <br>
} <br>
<br>
<br>
用 ``-b <base install directory> -nostdinc -I<install directory>/include
-I/usr/lib/gcc-lib/<new system dir>/<gcc version>/include'' 的選項編譯:
<br>
% gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include
-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc <br>
<br>
<br>
使用 ldd 確定程式是用 glibc2 連結,而非舊有的 libc: <br>
% ldd glibc <br>
libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000) <br>
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) <br>
<br>
<br>
如果通過編譯,連結也確定,并且執行時也產生 ``hello world!''
的輸出,那麼安裝就成功了。 </p>
<BR>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" bgcolor="#e0e0e0"><strong><A HREF="047.htm">后一頁</A><BR>
<A HREF="045.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 + -