ld(1)

NAME
ld - GNU linker (連接器)

總覽 (SYNOPSIS)

ld  [-o output ] objfile ...
    [-A architecture ] [-b input-format ] [-Bstatic] [-Bdynamic] [-Bsymbolic] [-c commandfile ] [--cref] [-d|-dc|-dp ]
    [-defsym symbol = expression ] [--demangle] [--no-demangle] [-e entry ] [-embedded-relocs] [-E] [-export-dynamic] [-f name ] [--auxiliary name ] [-F name ] [--filter name ] [-format input-format ] [-g] [-G size ] [-h name ] [-soname name ] [--help] [-i] [-l ar ] [-L searchdir ] [-M] [-Map mapfile ] [-m emulation ] [-n|-N] [-noinhibit-exec] [-no-keep-memory] [-no-warn-mismatch] [-O level ] [-oformat output-format ] [-R filename ] [-relax] [-r|-Ur] [-rpath directory ] [-rpath-link directory ] [-S] [-s] [-shared] [-sort-common] [-split-by-reloc count ] [-split-by-file] [-T commandfile ] [-Ttext textorg ] [-Tdata dataorg ] [-Tbss bssorg ] [-t] [-u sym ] [-V] [-v] [--verbose] [--version] [-warn-common] [-warn-constructors] [-warn-multiple-gp] [-warn-once] [-warn-section-align] [--whole-archive] [--no-whole-archive] [--wrap symbol ] [-X] [-x]

描述 (DESCRIPTION)
ld 合並 一組 目標檔案(object) 和 庫檔案(archive), 重定位 數據部分, 構建 符號引用(symbol reference). 一般說來, 編譯 生成 可執行檔案 的 最後步驟 就是 調用 ld . ld 可以讀取 用 連接器命令語言(Linker Command Language) 編寫的 稿本檔案, 它 能夠 對 連接過程 提供 精確 和 全面 的 控制. 本 手冊頁 不討論 命令語言; 可參看 `info ' 的 `ld ' 項, 或者 手冊 ld: the GNU linker , 裏面有 命令語言 的 細節 和 其他 GNU linker 的 內容. 這個版本 的 ld 使用 通用BFD庫 操作 目標檔案, ld 能夠 以 多種格式 讀入, 連接 和 輸出 目標檔案 —例如 COFF 或 a.out , 能夠 把 不同的格式 連接 在一起, 產生 各種 有效 的 目標檔案. 用 `objdump -i ' 可以 列出 各種 體系結構 支持 的 格式 列表; 另見 objdump(1). GNU linker 不僅 靈活 強大, 還能夠 比 其他 linker 提供 更多 的 診斷信息. 很多 linker 只要 碰上 一個錯誤 就 立刻停止 執行; 而 ld 一有可能 仍然 繼續執行, 這樣 容易 定位出 其他錯誤 (某些情況下, 儘管出了錯, 仍然 生成 輸出檔案). GNU linker ld 期望 實現 更廣泛 的 適用范圍, 盡可能 相容 其他 linker. 通過 命令行 和 環境變量, 使用者 可以 用 ld 執行 多種 操作.

選項 (OPTIONS)
過於豐富的 命令行選項 使人 感到 壓抑, 好在 實際使用 中, 多數情況下 只需要 掌握 其中 一小部分. 例如, 在 一個 標準的, 提供 相應支持 的 Unix 系統 中, 常常 用 ld 連接 標準的 Unix 目標檔案. 如果要 連接 hello.o :

$ ld -o output /lib/crt0.o hello.o -lc

它 告訴 ld 生成 一個 叫做 output 的 檔案 , 其中 連接了 檔案 /lib/crt0.o 和 hello.o 以及 庫檔案 libc.a (在 標準搜索目錄下). ld 的 命令行選項 可以 任意順序 出現, 甚至 重復出現. 多數 情況 下, 如果 用 不同的 參數 重復 同一種 選項, ld 不會 出現 更多的變化, 也不會 覆蓋 以前的 參數. (指 命令行 中 左邊的參數) 例外情況 — 某些選項 有 反復使用 的 需要 — 如 -A , -b (或等同的 -format ), -defsym , -L , -l , -R , 和 -u . 待連接的 目標檔案 列表, 即 總覽中的 objfile , 可以 放在 命令行選項 的 前面, 後面, 或者 混雜其中; 但是 不能 把 objfile 放置於 某個 選項開關 和 它的參數 中間. 一般說來 linker 要求 至少 輸入 一個 目標檔案, 但是 可以 用 -l , -R 輸入 其他格式 的 二進制檔案, 或者 用 命令語言 編寫的 稿本檔案. 如果 沒有 指定 二進制格式 的 輸入檔案, linker 就不能 產生 輸出檔案, 而是 顯示 `No input files '. 選項的參數 必須 出現在 代表 選項 的 字母 後面, 可以有 空白符, 也可以 沒有.

-Aarchitecture
    在 目前版本 的 ld 中, 這個 選項 僅適用於 Intel 960 體系系列. 在 ld 的 設置 中, architecture 參數 是 960 系列 的 成員 識別名稱 之一, 由 兩個字母 組成; 這個選項 指出 期望的 輸出目標, 對 輸入檔案 的 不相容指令 作出 警告. 它 能夠 改變 linker 對 庫檔案 的 搜索策略, 以便於 支持 體系相關庫, 方法是 把 體系識別名稱 添加在 待搜索 的 檔名 尾部. 例如, 如果 ld 命令行 有 `-ACA ' 和 `-ltry ', linker 將 搜索 (根據 內置的路徑 和 -L 指定的路徑) 以下 名稱 的 庫檔案

    try
    libtry.a
    tryca
    libtryca.a

    前兩項 是 常規做法; 後兩項 源於 `-ACA '. 將來發佈的 ld 可能 對 其他 體系結構 提供 類似功能. 可以 在 命令行上 使用 多個 -A 選項, 只要 該 體系 允許 和 目標體系 相連, 其選項 使 ld 在 搜索 -l 指定的庫 中, 增加 和 體系結構名稱 對應的庫.

-b input-format
    指定 輸入目標檔案 的 二進制格式, 目標檔案 在 命令行 上 給出, 放在 這個選項 的 後面. 一般 不需要 指定 這個選項, ld 的 預設輸入格式 配置為 各個機器 上 最常用 的 格式. input-format 是 字符串, BFD 庫 支持的 格式 名稱. 選項 -format input-format 起 相同的 作用, 稿本命令 TARGET 也是 一樣. 連接 某些 不尋常的 二進制檔案 時 需要 這個選項. 或者 使用 -b 選項 強調 格式切換 (連接 不同格式 的 目標檔案), 比如說, 在 每組 特定格式 的 目標檔案 前面 使用 -b input-format 選項. 環境變量 GNUTARGET 用於 指定 預設格式. 也可以 在 稿本檔案 中 用 TARGET 命令 定義 輸入格式.

-Bstatic
    禁止 連接 共享庫. 這個選項 只在 支持 共享庫 的 平台 上 有意義.

-Bdynamic
    連接 動態庫. 這個選項 只在 支持 共享庫 的 平台 上 有意義, 一般說來 它 是 預設選項.

-Bsymbolic
    當 創建 共享庫 的 時候, 只要 有可能, 在 共享庫 內 編聯(bind reference) 全局符號 和 定義(definition). 一般說來, 允許 連接了 某個 共享庫 的 程式 覆蓋 共享庫內 的 定義. 這個選項 只在 支持 共享庫 的 ELF 平台 上 有意義.

-c commandfile
    告訴 ld 從 檔案 commandfile 中 讀取 連接 命令. 這些 命令 徹底的 覆蓋 ld 的 預設 連接 格式 (而不是 添加); commandfile 必須 詳盡的 描述 目標格式 的 所有細節. 你 也可以 在 命令行 上 直接嵌入 連接命令, 把 稿本 嵌在 大括弧 `{ ' 和 `} ' 中間.

--cref
    輸出 交叉引用表(cross reference). 如果 創建了 連接映像(linker map) 檔案, 交叉引用表 就 輸出到 映像檔案 中, 否則 送往 標準輸出.

-d

-dc

-dp 這 三個選項 是 一回事, 為了 相容 其他 linker 而 同時提供. 即使 已經 指定 ld 生成 可重定位檔案 (-r ), 它們 能為 公共符號(common symbol) 分配 空間. 稿本命令 FORCE_COMMON_ALLOCATION 起 同樣作用.

-defsym symbol = expression
    在 輸出檔案 中 創建 一個 全局符號, 它 含有 expression 給出的 絕對地址. 可以 在 命令行 使用 多個 這樣的 選項. 這個 expression 只能 使用 有限的 數學形式: 十六進制常數, 已經存在 的 符號名字. 或者 使用 + 和 - 加減 十六進制常數 或 符號. 如果 需要 更復雜的 表達式, 考慮 使用 命令語言稿本.

--demangle

--no-demangle
    這些選項 控制 是否在 出錯信息 和 其他信息 中, 輸出 可讀的(demangle) 符號名稱. 如果 使用了 demangle 選項, linker 盡量使 符號名稱 容易理解: 去掉 領頭的 下劃線 (如果 被 目標檔案格式 採用); 把 C++ 難懂的 符號名稱 (symbol name) 轉換成 可讀的 名稱. 預設情況下 linker 輸出 可讀的 符號名稱, 除非 設置了 環境變量 COLLECT_NO_DEMANGLE . 這些選項 能夠 覆蓋 預設行為.

-e entry
    使用 entry (入口) 標識符 作為 程式 執行 的 開始端, 而不是 預設入口. 關於 預設入口 和 其他 設置 入口 的 方法 參見 `info ' 的 ld ' 項.

-embedded-relocs
    這個選項 僅用於 連接 MIPS上 嵌入的 PIC 代碼, GNU 的 編譯器 和 匯編器 用 -membedded-pic 選項 能夠 生成 這種代碼. 它使 linker 創建 一張 表格, 用於 在 運行的時候, 重定位 任何 被 靜態初始化 為 指針值 的 數據. 詳見 testsuite/ld-empic 的 代碼.

-E

-export-dynamic
    當 創建 ELF 檔案 時, 把 所有 符號 加入 動態符號表. 一般說來, 動態符號表 只包含 動態目標庫(dynamic object) 需要的 符號. 用 dlopen 的 時候 需要 這個 選項.

-f name

--auxiliary name
    創建 ELF 共享目標庫 時, 把 內部的 DT_AUXILIARY 字段 設置為 name. 它 告訴 動態linker, 把 該 共享目標庫 的 符號表 用做 共享目標 name 的 符號表 的 輔助過濾器.

-F name

--filter name
    創建 ELF 共享目標庫 時, 把 內部的 DT_FILTER 字段 設置為 name. 它 告訴 動態linker, 把 該 共享目標庫 的 符號表 用做 共享目標 name 的 符號表 的 輔助過濾器.

-format input-format
    等同於 -b input-format .

-g  虛設項; 用於 相容 其他 工具.

-G size
    把 使用 GP 寄存器 優化的 目標(檔案) 大小 限制為 size . 用於 MIPS ECOFF, 對 其他 目標檔案格式 無效.

-h name

-soname name
    創建 ELF 共享目標庫 時, 把 內部的 DT_SONAME 字段 設置為 name. 如果 某個 可執行檔案 連接了 含有 DT_SONAME 字段 的 共享目標庫, 當 該程式 運行 時, 動態 linker 試圖 根據 DT_SONAME 字段 調入 共享的 目標庫, 而 不使用 提供給 linker 的 檔名.

--help
    在 標準輸出 顯示 命令行選項 的 摘要, 然後 結束. 這個選項 和 --version 選項 使用了 兩個 短橫線, 不是 一個, 目的是 相容 其他 GNU 程式. 只用 一個 短橫線 的 選項 是為了 相容 其他 linker.

-i  執行 增量連接(incremental link), 等同於 -r 選項.

-lar
    在 連接檔案 列表 中 增加 歸檔庫檔案 ar . 可以 多次 使用 這個選項. 凡指定 一項 ar , ld 就會 在 路徑列表 中 增加 一項 對 lib ar .a的 搜索.

-Lsearchdir
    這個選項 將 路徑 searchdir 添加 到 路徑列表 中去, ld 在 這個 列表 中 搜索 歸檔庫. 可以 多次 使用 這個選項. 預設的 搜索路徑集 (不使用 -L 時) 取決於 ld 使用的 模擬模式(emulation) 及其 配置. 在 連接稿本 中, 可以 用 SEARCH_DIR 命令 指定 路徑.

-M  在 標準輸出 顯示 連接映像 — 有關 ld 把 符號 映射到 何處 的 診斷信息, 以及 全局公共存儲器 的 分配 信息.

-Map mapfile
    把 連接映像 輸出到 mapfile 檔案 中 — 有關 ld 把 符號 映射到 何處 的 診斷信息, 以及 全局公共存儲器 的 分配 信息.

-m emulation
    模仿 emulation 連接器. 可以 用 --verbose 或 -V 選項 列出 有效的 模擬項. 這個選項 覆蓋 編譯 進去 的 預設項.

-N  指定 可讀寫 的 正文 和 數據 節(section). 如果 輸出格式 支持 Unix 風格的 幻數(magic number), 則 輸出檔案 標記為 OMAGIC . 當 使用 `-N ' 選項 時, linker 不做 數據段 的 頁對齊(page-align).

-n  設置 正文段 為 只讀, 如果 有可能, NMAGIC 為 可寫.

-noinhibit-exec
    一般說來, 如果 連接的 時候 發生 錯誤, linker 不會 產生 輸出檔案. 使用了 這個 標誌選項, 只要 不出 致命差錯, 仍能夠 產生 輸出檔案.

-no-keep-memory
    linker 通常 犧牲 記憶體, 優化 速度, 它 把 輸入檔案 的 符號表 緩沖在 記憶體中. 這個選項 使 linker 必要時 重復讀取 符號表, 以便 優化 記憶體使用. 連接 大型 可執行檔案 的 時候, linker 有可能 記憶體 不夠, 此時 可以 試試 這個選項.

-no-warn-mismatch
    一般情況下, 如果 試圖 連接 某些 不匹配 的 輸入檔案, 比如說, 按 不同 處理器 編譯 的, 或者 具有 不同的 字節順序(endianness), linker 就會 報錯. 這個選項 告訴 linker 默許 這種 錯誤. 要 小心使用 這個選項, 除非 你 正在做 某些 特殊 操作, 而且 能夠 確定 不需要 linker 報錯.

-o output
    output 用來 指定 ld 生成的 程式名; 如果 沒有 使用 這個選項, 預設名字 是 `a.out '. 稿本命令 OUTPUT 起 同樣 作用.

-Olevel
    生成 優化的 輸出檔案. 這個選項 佔用 比較多 的 時間, 因此 僅 常用於 最終檔案 的 生成. level 是 數值參數. 任何 大於零 的 參數 意味著 要求 優化.

-oformat output-format
    指定 輸出目標檔案 的 二進制格式. 一般 不需要 指定 這個選項, ld 的 預設 輸出格式 配置為 各個機器 上 最常用 的 格式. output-format 是 一個 字符串, BFD 庫 支持的 格式 名稱. 稿本命令 OUTPUT_FORMAT 也可以 指定 輸出格式, 但是 這個選項 能夠 覆蓋 掉 它.

-R filename
    從 檔案 filename 中 讀取 符號名稱 及其 地址, 但是 不做 重定位, 不傳送到 輸出端. 它 可以 使 輸出檔案 符號引用 其他程式中 定義的 絕對地址.

-relax
    這個選項 的 效果 取決於 機器, 目前 只支持 H8/300. 在 某些 平台 上 可以 使用 這個選項 做 全局優化, 它 讓 linker 解決 程式中 的 地址處理, 例如 在 輸出目標檔案 中 緩和(relax) 地址模式 以及 合成 (synthesize) 新指令. 其他平台 也接受 `-relax ' 選項, 但是 不起作用.

-r  生成 可重定位 輸出 — 就是說, 生成的 輸出檔案 能夠 依次 成為 ld 的 輸入, 一般 稱之為 不完全(partial) 連接. 它 有 一個 副效應, 在 支持 標準 Unix 幻數(magic number) 的 環境 中, 這個選項 把 輸出檔案 的 幻數 設置成 OMAGIC . 如果 沒有 指定 這個選項, linker 生成 絕對定位 的 檔案. 連接 C++ 程式時, 這個選項 不會 解析 出 對 構造子(constructor) 的 引用(reference); 不妨 改用 -Ur 選項. 這個選項 的 效果 和 -i 一樣.

-rpath directory
    增加 一條 對 運行時(runtime)庫 的 搜索路徑. 這個選項 用於 連接 ELF 可執行 檔案 和 共享目標庫. 所有 -rpath 選項 的 參數 被 合並, 然後 一起 傳遞 給 運行時 linker, 運行時 linker 在 運行 的 時候 使用 這些 路徑 尋找 共享目標庫. -rpath 也可以 用來 定位 共享目標庫 引用的 共享目標庫; 參見 對 -rpath-link 選項 的 敘述. 如果 連接 ELF 可執行檔案 時 沒有 指定 -rpath 選項, linker 就使用 環境變量 LD_RUN_PATH 的 內容 — 只要 這個 環境變量 存在. -rpath 選項 能夠 用在 SunOS 上, 預設狀況下, linker 可以 根據 給出的 -L 選項 形成 運行時 搜索路徑. 如果 使用了 -rpath 選項, 運行時 搜索路徑 從 -rpath 中 產生, 而 忽略 -L 選項. 這一點 有利於 使用 gcc, 在 NFS 檔案系統 上, gcc 可能 產生 許多 -L 選項.

-rpath-link directory
    使用 ELF 或 SunOS 的 時候, 某些 共享庫 可能 需要 其他 共享庫. 這種情況 一般 發生在 某個 ld -shared 連接 中, 輸入檔案 包含了 共享庫. 如果 linker 遇到 這樣的 依賴情況, 當 它 執行 非共享, 不可重定位 的 連接 時, linker 將 自動 尋找 所需的 共享庫, 如果 它們 沒有 被 顯明 包含, 就 把 它們 包含到 連接 中. 在 這種情況下, -rpath-link 選項 指定了 最先 搜索 的 目錄集. -rpath-link 能夠 指定 一批 目錄, 目錄 用 冒號 隔開. 也可以 用 這些 目錄名 作為 參數, 重復 使用 這個 選項. 如果 沒有 找到 需要的 共享庫, linker 產生 一個 警告, 但是 繼續 連接.

-S  去掉 輸出檔案 中的 調試符號信息 (但不是 所有符號).

-s  去掉 輸出檔案 中的 全部 符號信息.

-shared
    創建 一個 共享庫. 目前 只支持 ELF 和 SunOS 平台 (在 SunOS 上, 這個選項 不是 必須的, 如果 沒有 使用 -e 選項, 而且 存在 不確定 的 符號, linker 將 自動 創建 共享庫).

-sort-common
    ld 通常 把 全局公共符號 放到 適當的 輸出節, 按照 大小 排序. 首先是 單字節符號, 然後是 雙字節, 接下來是 四字節, 隨後是 其他的. 它的 目的是 防止 符號間 因為 排布限制 出現 間隙. 使用 這個選項 可以 禁止 排序.

-split-by-reloc count
    在 輸出檔案 中 創建 附加節(extra section), 使得 輸出檔案 中, 沒有 某一個 輸出節 包含 大於 count 個 重定位項. 它 用於 產生 大型 可重定位 COFF 目標檔案, 可以 插入到 某些 實時核心 中; 因為 COFF 不能 在 單一節內 存放 65535 以上的 重定位項. 注意, 有些 目標檔案格式 不支持 任意 分節, 此時 這個選項 將會 操作 失敗. 此外, linker 不能夠 分割 輸入節, 然後 重新分配, 因此 如果 某個 輸入節 包含 count 以上的 重定位項, 相應的 輸出節 將 包含 同樣多的 重定位項.

-split-by-file
    類似於 -split-by-reloc , 但是 它為 每個 輸入檔案 建立一個 新的 輸出節.

-Tbss org

-Tdata org

-Ttext org
    把 org 作為 輸出檔案 的 段 起始地址 — 特別是 — bss , data , 或 text 段. org 必須是 十六進制整數.

-T commandfile
    等同於 -c commandfile ; 用於 相容 其他工具.

-t  在 ld 處理 輸入檔案 的 時候 顯示 檔名.

-u sym
    把 sym 作為 未定義(undefined) 的 符號 送入 輸出檔案. 這樣做 可以, 例如, 促使 linker 從 標準庫 連接 某個 附加的模塊. 允許 使用 多個 -u 選項 輸入 多個 未定義 符號.

-Ur 對於 除 C++ 以外的 任何 程式, 這個選項 等同於 -r : 生成 可重定位 的 輸出 — 就是說, 能夠 依次 輸入 ld 的 輸出檔案. 連接 C++ 程式 的 時候, -Ur 將 解析 對 構造子(constructor) 的 引用(reference), 這一點 和 -r 不同.

--verbose
    顯示 ld 的 版本號, 列出 支持的 模擬項(emulation). 顯示 哪些 輸入檔案 能夠 打開, 哪些 不能,

-v, -V
    顯示 ld 的 版本號. 此外 -V 選項 能夠 列出 支持的 模擬項.

--version
    顯示 ld 的 版本號 然後 結束.

-warn-common
    當 公共符號 和 其他 公共符號 合並 時, 或者 和 某個 符號定義 合並 時, linker 就發出 警告. Unix 系統的 linker 允許 這種 有些 草率 的 做法, 其他 作業系統 則 不行. 這個選項 幫助你 在 合並 全局符號 的 時候 發現 潛在問題.

-warn-constructors
    如果 使用了 全局構造子(global constructor), linker 就發出 警告. 它 只對 某些 目標檔案結構 有用, 對於 如 COFF 或 ELF, 此 linker 不能夠 檢測 全局構造子 的 使用情況.

-warn-multiple-gp
    如果 輸出檔案 需要 多個 全局指針值, linker 就發出 警告. 這個選項 只能 用於 某些 處理器, 如 Alpha.

-warn-once
    對 每個 未定義符號 只 警告 一次, 而不是 每次 引用 這個符號 都 警告.

-warn-section-align
    如果 某個 輸出節(section) 的 地址 因為 邊界對齊 而 發生 改變, linker 就發出 警告. 典型情況下 由 輸入節 設置 邊界, 只有 不做 明確指定 的 時候 地址 才會 改變; 就是說, SECTIONS 命令 沒有 指出 該節 的 開始地址.

--whole-archive
    對於 命令行 上 --whole-archive 選項 提到的 每個 歸檔庫, 連接時 連入 歸檔庫 的 全部 目標檔案, 而不是 在 歸檔庫 中 搜索 所需的 目標檔案. 一般用於 把 歸檔庫檔案 轉變成 共享庫檔案, 迫使 全部 目標檔案 進入 共享庫.

--no-whole-archive
    關閉 --whole-archive 選項 對 歸檔庫 的 影響.

--wrap symbol
    對 symbol 使用 包裝函數(wrapper function). 任何 對 symbol 未定義 的 引用 (undefined reference) 將 解析為 __wrap_symbol. 任何 對 __real_symbol 未定義 的 引用 將 解析為 symbol.

-X  刪除 全部 臨時的 局部符號. 大多數 目的檔案 中, 這些 局部符號 的 名字 用 `L ' 做 開頭.

-x  刪除 全部 局部符號.

環境 (ENVIRONMENT)
通過 環境變量 GNUTARGET 可以 改變 ld 的 行為. 如果 沒有 使用 -b 選項 (或 相同的 -format ), GNUTARGET 決定了 輸入檔案 的 目標格式, 其值 應為 BFD的 名稱之一. 如果 沒有 GNUTARGET 環境變量, ld 就使用 主機的 本地格式. 如果 GNUTARGET 設置為 default , BFD 通過 檢查 輸入檔案 的 二進制格式 判斷 輸入格式; 這個方法 通常 有效, 但 隱含 歧義, 這是因為 沒有 辦法 保証 標誌 目標檔案格式 的 幻數 是 唯一的. 不過, 各個系統 配置 BFD 的 時候, 會把 系統 約定的格式 放在 搜索列表 的 前面, 因此 能夠 按照 約定 消除 歧義.

另見 (SEE ALSO)
objdump(1)
`ld' 和 `binutils' 項 ( info )
ld: the GNU linker, Steve Chamberlain and Roland Pesch; The GNU Binary Utilities, Roland H. Pesch.

COPYING
Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.

[中文版維護人]
徐明 <xuming@users.sourceforge.net>

[中文版最新更新]
2003/05/13 第一版

《中國Linux論壇man手冊頁翻譯計劃》
http://cmpp.linuxforum.net