wget-1.20 INSTALL
0. 安裝說明
版權所有© 1994-1996、1999-2002、2004-2016 自由軟件基金會
1. 基本安裝
簡單地說,shell 命令 './configure && make && make install'
將會配置、構建和安裝這個包。下列更詳細的說明是一般性的;有關此包的特定說明,請參閱 'README'
文件。有些包提供了這個 'INSTALL'
文件,但沒有實現下面列出的所有特性。給定包中缺少可選特性並不一定是 bug。有關 GNU 包的更多建議可以在 *note Makefile Conventions
中找到:(標準) Makefile 約定。
'configure'
shell 腳本嘗試猜測編譯期間使用的各種系統相關變量的正確值。它使用這些值在包的每個目錄中創建一個 'Makefile'
。它也可能創建一個或多個 '.h'
文件,這些文件包含系統相關定義。最後,它創建一個 shell 腳本 'config.status'
,您可以在將來運行此腳本以重新創建當前配置;它還將創建一個文件 'config.log'
,此文件包含編譯器的輸出(主要用於調試 'configure'
)。
它還可以使用一個可選文件(通常稱爲 'config.cache'
,可以使用 '--cache-file=config.cache'
或簡單的 '-C'
來啓用),此文件保存測試結果,以加快重新配置。默認情況下 cache 被禁用,以防止意外使用過期 cache 文件時出現問題。
如果您需要做一些不尋常的事情來編譯包,請嘗試找出 'configure'
如何檢查是否要做這些事情,並將差異或說明發送郵件到 'README'
中給出的地址,以便在下一個版本中考慮它們。如果您正在使用 cache,並且在某個點 'config.cache'
包含您不想保存的結果,您可以刪除或編輯它。
文件 'configure.ac'
(或 'configure.in'
)被一個名爲 'autoconf'
的程序使用以創建 'configure'
。如果你想使用一個較新版本的 'autoconf'
改變它或重新生成 'configure'
,你需要 'configure.ac'
。
編譯這個包最簡單的方法是:
'cd'
包含包的源代碼的目錄,鍵入'./configure'
來爲您的系統配置包。
運行 ‘configure’ 可能需要一段時間。在運行時,它會打印一些消息,說明它正在檢查哪些特性。- 鍵入
'make'
編譯包。 - 可選的,鍵入
'make check'
來運行包附帶的任何自我測試,通常使用剛剛構建的卸載二進制文件。 - 鍵入
'make install'
來安裝程序和任何數據文件和文檔。在安裝到 root 擁有的前綴時,建議將包爲普通用戶配置和構建,並且僅使用 root 特權執行'make install'
命令。 - 可選的,鍵入
'make installcheck'
來重複任何自我測試,但這次要在最終安裝位置使用二進制文件。此命令不安裝任何東西。以普通用戶的身份運行此目標,特別是如果先前的'make install'
需要 root 特權,將驗證安裝是否正確完成。 - 您可以通過鍵入
'make clean'
從源代碼目錄中刪除程序二進制文件和目標文件。要刪除 ‘configure’ 創建的文件(以便您可以爲另一種計算機編譯包),鍵入'make distclean'
。還有一個'make maintainer-clean'
命令,但主要是針對包的開發人員。如果您使用它,您可能必須獲得各種各樣的其他程序,以便重新生成隨發行版而來的文件。 - 通常,您還可以鍵入
'make uninstall'
來再次刪除已安裝的文件。實際上,並不是所有的包都測試過 uninstall 是否正確工作,即使 GNU 編碼標準要求。 - 有些包,特別是那些使用 Automake 的包,提供了
'make distcheck'
,開發人員可以使用它來測試所有其他命令,比如 ‘make install’ 和 ‘make uninstall’ 是否正常工作。該命令通常不由最終用戶運行。
2. 編譯器和選項
有些系統需要不尋常的選項來編譯或鏈接,而 ‘configure’ 腳本並不知道這些選項。運行 './configure --help'
獲取一些相關環境變量的詳細信息。
您可以通過在命令行或環境中設置變量來爲配置參數提供 ‘configure’ 初始值。舉個例子:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
參見第 9 章 定義變量 ,以獲得更多細節。
3. 針對多種體系結構進行編譯
通過將用於每種體系結構的目標文件放在它們自己的目錄中,您可以同時爲多種計算機編譯包。爲此,您可以使用 GNU 'make'
。'cd'
您希望目標文件和可執行文件將生成的目錄,運行 'configure'
腳本。‘configure’ 會自動檢查目錄中的源代碼,‘configure’ 所在的目錄和 ‘…’。這就是所謂的 “VPATH” 構建。
使用非 GNU 'make'
,在源代碼目錄中一次編譯一個架構的包會更安全。在爲一個體繫結構安裝包之後,在爲另一個體繫結構重新配置之前使用 'make distclean'
。
在 MacOS X 10.5 及更高版本的系統上,您可以通過向編譯器指定多個 ‘-arch’ 選項,而只向預處理器指定一個 ‘-arch’ 選項,來創建可以在多種系統類型上工作的庫和可執行程序(稱爲 “fat” 或 “universal” 二進制文件)。命令如下
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
這並不能保證在所有情況下都能產生工作輸出,如果有問題,您可能必須一次構建一個架構並使用 'lipo'
工具組合結果。
4. 安裝位置
默認情況下,‘make install’ 會將包的命令安裝在 ‘/usr/local/bin’ 下,include 文件安裝在 ‘/usr/local/bin’ 下,等等。您可以指定一個安裝前綴,而不是 ‘/usr/local’,方法是給 ‘configure’ 指定選項 '--prefix=PREFIX'
,其中 PREFIX
必須是一個絕對文件名。
您可以爲特定於體系結構的文件和獨立於體系結構的文件指定單獨的安裝前綴。如果您爲 ‘configure’ 指定選項 '--exec-prefix=PREFIX'
,則包使用 PREFIX
作爲安裝程序和庫的前綴。文檔和其他數據文件仍然使用常規前綴。
此外,如果使用不同尋常的目錄佈局,可以使用 '--bindir=DIR'
等選項爲特定類型的文件指定不同的值。運行 'configure --help'
,查看您可以設置的目錄列表以及其中包含哪些文件。一般來說,這些選項的默認值是用 '${prefix}'
表示的,因此只指定 '--prefix'
將影響沒有顯式提供的所有其他目錄規範。
影響安裝位置的最便攜方式是將正確的位置傳遞給 ‘configure’;然而,許多包提供以下一種或兩種快捷方式,將變量賦值傳遞給 ‘make install’ 命令行,以更改安裝位置,而無需重新配置或重新編譯。
- 第一個方法涉及爲每個受影響的目錄提供一個覆蓋變量。例如,
'make install prefix=/alternate/directory'
將爲用'${prefix}'
表示的所有目錄配置變量選擇一個備用位置。在'configure'
期間指定但不是用'${prefix}'
表示的任何目錄都必須在安裝時覆蓋,以便重新定位整個安裝。GNU 編碼標準要求使用 makefile 變量覆蓋每個目錄變量的方法,理想情況下不會導致重新編譯。然而,一些平臺已經知道共享庫的語義的侷限性,當使用這種方法時,最終需要重新編譯,尤其是在使用 GNU Libtool 的包中。 - 第二種方法涉及提供 ‘DESTDIR’ 變量。例如,
'make install DESTDIR=/alternate/directory'
將在所有安裝名稱之前加上 ‘/alternate/directory’。'DESTDIR'
覆蓋的方法不是 GNU 編碼標準所要求的,也不能在具有驅動字母的平臺上工作。另一方面,它在避免重新編譯方面做得更好,即使在'configure'
時沒有以'${prefix}'
形式指定某些目錄選項,它也能很好地工作。
5. 可選特性
如果包支持它,您可以通過向 ‘configure’ 提供選項 '--program-prefix=PREFIX'
或 '--program-suffix=SUFFIX'
,使程序在名稱上附加前綴或後綴。
有些包爲 ‘configure’ 提供了 '--enable-FEATURE'
選項,其中 FEATURE
表示包的可選部分。他們可能還提供了 '--with-PACKAGE'
選項,其中 PACKAGE
類似於 'gnu-as'
或 'x'
(用於 x Window System)。‘README’ 會說明包能識別的所有 ‘–enable-’ 和 ‘–with-’ 選項。
對於使用 X Window System 的包,‘configure’ 通常可以自動找到 X include 和 library 文件,但是如果沒有找到,可以使用 ‘configure’ 選項 '--x-includes=DIR'
和 '--x-libraries=DIR'
來指定它們的位置。
有些包提供了配置 'make'
執行的詳細程度的功能。對於這些包,運行 './configure --enable-silent-rules'
將默認值設置爲最小輸出,可以用 'make V=1'
覆蓋該值;運行 './configure --disable-silent-rules'
將默認值設置爲 verbose,可以使用 'make V=0'
覆蓋該值。
6. 特定的系統
在 HP-UX 上,默認的 C 編譯器不兼容 ANSI C。如果沒有安裝 GNU CC,建議使用以下選項來使用 ANSI C 編譯器:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
如果這不起作用,請安裝用於 HP-UX 的 GCC 預構建二進制文件。
HP-UX ‘make’ 更新目標具有與其先決條件相同的時間戳,這使得它在涉及到生成的文件(如 ‘configure’)時通常不可用。而是使用 GNU 的 ‘make’。
在 OSF/1 a.k.a. Tru64 上,默認 C 編譯器的某些版本無法解析它的 '<wchar.h>'
頭文件。選項 ‘-nodtk’ 可以作爲一個變通辦法。如果沒有安裝 GNU CC,建議您試試:
./configure CC="cc"
如果這不起作用,那就試試:
./configure CC="cc -nodtk"
在 Solaris 上,不要將 ‘/usr/ucb’ 放在 ‘PATH’。這個目錄包含幾個功能失調的程序;這些程序的工作變體可以在 ‘/usr/bin’ 中找到。因此,如果您需要 ‘/usr/ucb’ 在您的 ‘PATH’ 中,把它放在 _after_ '/usr/bin'
中。
在 Haiku 中,爲所有用戶安裝的軟件進入 ‘/boot/common’,而不是 ‘/usr/local’。建議使用以下選項:
./configure --prefix=/boot/common
7. 指定系統類型
可能有一些特性 ‘configure’ 不能自動計算出來,但需要根據包將運行的機器類型來確定。通常,假設構建的包運行在 _same_
體系結構上,‘configure’ 可以解決這個問題,但是如果它打印一條消息說它猜不出機器的類型,那麼就給它 ‘–build=TYPE’ 選項。TYPE
可以是系統類型的短名稱,如 ‘sun4’,也可以是具有以下形式的規範名稱:CPU-COMPANY-SYSTEM。
SYSTEM 可以有以下一種形式:
- OS
- KERNEL-OS
參見文件 ‘config.sub’ 表示每個字段的可能值。如果 ‘config.sub’ 不包含在這個包中,那麼這個包就不需要知道機器的類型。
如果您正在構建用於交叉編譯的編譯器工具,那麼應該使用選項 ‘–target=TYPE’ 來選擇它們將生成代碼的系統類型。
如果你想使用一個交叉編譯器,它爲一個不同於構建平臺的平臺生成代碼,你應該指定 “host” 平臺(即生成的程序最終將在其上運行),並使用 ‘–host=TYPE’。
8. 共享默認
如果您想爲 ‘configure’ 腳本設置默認值以便共享,可以創建一個名爲 ‘config.site’ 的站點 shell 腳本,此腳本爲變量 ‘CC’、‘cache_file’ 和 ‘prefix’ 提供默認值。‘configure’ 查找 ‘PREFIX/share/config.site’,如果它存在的話,然後查找 ‘PREFIX/etc/config.site’,如果它存在的話。或者,您可以將 ‘CONFIG_SITE’ 環境變量設置爲站點腳本的位置。警告:並非所有的 ‘configure’ 腳本都查找一個站點腳本。
9. 定義變量
沒有在站點 shell 腳本中定義的變量可以在傳遞給 ‘configure’ 的環境中設置。但是,有些包可能在構建過程中再次運行 configure,這些變量的自定義值可能會丟失。爲了避免這個問題,您應該在 ‘configure’ 命令行中使用 ‘VAR=value’ 設置它們。例如:
./configure CC=/usr/local2/bin/gcc
使指定的 ‘gcc’ 用作 C 編譯器(除非在站點 shell 腳本中重寫了它)。
不幸的是,由於 Autoconf 的限制,這種技術不適用於 ‘CONFIG_SHELL’。在限制解除之前,你可以使用以下方法:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
10. ‘configure’ 調用
‘configure’ 識別以下選項來控制它的操作方式。
- ‘–help’ ‘-h’
打印 ‘configure’ 的所有選項的摘要,然後退出。 - ‘–help=short’ ‘–help=recursive’
打印此包的 ‘configure’ 唯一選項的摘要,然後退出。‘short’ 變量列出僅在頂層使用的選項,而 ‘recursive’ 變量列出的選項也出現在任何嵌套包中。 - ‘–version’ ‘-V’
打印用於生成 ‘configure’ 腳本的 Autoconf 版本,然後退出。 - ‘–cache-file=FILE’
啓用 cache:使用並將測試結果保存在 FILE 中,通常爲 ‘config.cache’。FILE 默認爲 ‘/dev/null’ 來禁用 cache。 - ‘–config-cache’ ‘-C’
用於 ‘–cache-file=config.cache’ 的別名。 - ‘–quiet’ ‘–silent’ ‘-q’
不要打印說明正在進行哪些檢查的消息。若要禁用所有正常輸出,請將其重定向到 ‘/dev/null’(仍然會顯示任何錯誤消息)。 - ‘–srcdir=DIR’
在目錄 DIR 中查找包的源代碼。通常 ‘configure’ 可以自動確定該目錄。 - ‘–prefix=DIR’
使用 DIR 作爲安裝前綴。參見第 4 章 安裝位置,瞭解更多細節。 - ‘–no-create’ ‘-n’
運行 configure 檢查,但是在創建任何輸出文件之前停止。
‘configure’ 還接受其他一些不太有用的選項。運行 ‘configure --help’ 獲得更多細節。