ar − 建 立 , 修 改 檔 案 或 從 檔 案 中 抽 取 成 員 .
ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...
GNU 組 織 的 ar 程 式 用 於 建 立 , 修 改 檔 案 或 從 檔 案 中 抽 取 成 員 . 一 個 檔 案 是 一 個 包 含 了 很 多 其 它 檔 案 的 單 獨 的 檔 案 , 它 採 用 的 結 構 使 得 可 以 很 容 易 恢 復 原 來 獨 立 的 檔 案 (稱 為 檔 案 的 成 員 ).
原 始 檔 案 (成 員 )的 內 容 , 權 限 , 時 間 屬 性 , 屬 主 和 組 都 在 檔 案 中 得 到 保 留 , 在 抽 取 時 可 以 得 到 恢 復 .
ar 程 式 維 護 的 檔 案 成 員 可 以 擁 有 一 定 長 度 的 名 字 ; 具 體 情 況 , 與 你 系 統 上 的 ar 是 怎 樣 配 置 的 有 關 . 為 了 與 其 它 工 具 維 護 的 檔 案 格 式 相 容 , 有 可 能 對 成 員 名 字 的 長 度 有 嚴 格 的 限 制 , 如 果 確 實 是 這 樣 , 通 常 要 求 採 用 15 個 字 符 (典 型 的 格 式 是 a.out), 或 者 16 個 字 符 (典 型 的 格 式 是 coff).
ar 是 一 個 二 進 制 格 式 的 工 具 , 因 為 這 一 類 檔 案 多 數 都 作 為 保 存 公 共 例 程 的 庫 檔 案 使 用 .
通 過 指 定 修 飾 符 ‘s’, ar 可 以 建 立 指 向 檔 案 中 可 重 定 位 目 標 模 塊 定 義 的 符 號 表 的 索 引 , 一 旦 建 立 , 在 ar 更 新 其 內 容 時 (通 過 ‘q’ 執 行 更 新 操 作 ) , 此 索 引 也 會 得 到 更 新 . 有 這 種 索 引 的 檔 案 可 以 加 速 到 庫 檔 案 的 連 接 過 程 , 並 且 允 許 庫 中 的 例 程 相 互 調 用 而 無 須 考 慮 它 們 在 檔 案 中 的 位 置 .
可 以 使 用 ‘nm −s’ 或 ‘nm −−print−armap’ 列 出 這 種 索 引 , 如 果 檔 案 沒 有 這 類 索 引 , 可 以 使 用 另 外 一 個 稱 為 ranlib 的 ar 程 式 增 加 這 種 索 引 .
ar 至 少 需 要 兩 個 參 數 才 能 運 行 : 一 個 指 明 執 行 的 操 作 (可 能 伴 隨 有 其 它 的 修 飾 符 ), 作 用 的 檔 案 名 字 . 多 數 操 作 可 以 接 受 更 多 的 檔 案 參 數 , 指 明 操 作 的 詳 細 檔 案 .
ar 允 許 你 在 第 一 個 命 令 行 參 數 中 以 任 意 順 序 混 合 指 定 操 作 碼 p 和 修 飾 符 mod .
只 要 你 願 意 , 也 可 以 用 破 折 號 作 為 命 令 行 第 一 個 參 數 的 開 始 .
p 關 鍵 字 指 明 要 執 行 的 操 作 , 只 能 指 明 為 如 下 之 一 :
|
d |
從 檔 案 中 刪 除 模 塊 . 通 過 files 指 明 要 刪 除 的 模 塊 的 名 稱 ; 如 果 沒 有 指 出 要 刪 除 的 檔 案 名 稱 , 檔 案 不 會 改 變 任 何 內 容 . |
如 果 給 出 了 ’v’ 修 飾 符 ,ar 會 例 出 它 刪 除 的 每 一 個 模 塊 .
|
m |
用 此 操 作 在 檔 案 中 移 動 成 員 . |
如 果 某 個 符 號 名 在 檔 案 的 多 個 成 員 中 有 定 義 , 那 麼 程 式 怎 樣 連 接 檔 案 檔 案 得 到 的 結 果 可 能 是 不 同 的 .
如 果 沒 有 為 m 指 定 修 飾 符 , 由 files 指 出 的 成 員 將 移 動 到 檔 案 的 末 尾 ; 可 以 通 過 ‘a’, ‘b’ 或 ‘i’ 等 修 飾 符 , 指 定 成 員 移 動 的 具 體 位 置 .
|
p |
在 標 準 輸 出 上 列 印 檔 案 中 指 定 的 成 員 . 如 果 給 出 了 ‘v’ 修 飾 符 , 在 列 印 成 員 內 容 之 前 , 先 列 印 成 員 的 名 字 . |
如 果 沒 有 指 明 files 參 數 , 檔 案 中 所 有 的 成 員 都 會 被 列 印 出 來 .
|
q |
快 速 追 加 ; 增 加 files 到 archive 的 末 尾 , 不 進 行 替 換 檢 查 . |
修 飾 符 ‘a’ ‘b’ 和 ‘i’不 影 響 此 操 作 , 新 成 員 始 終 追 加 到 檔 案 的 末 尾 處 .
修 飾 符 ‘v’ 可 以 使 ar 列 出 它 追 加 的 所 有 檔 案 .
由 於 本 功 能 是 用 於 快 速 操 作 , 即 使 檔 案 中 有 符 號 表 索 引 也 不 進 行 更 新 ; 可 以 使 用 ‘ar s’ 或 ranlib 明 確 要 求 更 新 這 些 索 引 .
在 為 快 速 追 加 重 建 索 引 時 ,由 於 有 太 多 不 同 的 系 統 , 所 以 GNU ar 採 用 ‘q’ 作 為 ‘r’的 一 個 同 義 字 .
|
r |
把 檔 案 files 插 入 archive ( 替 換 ). 本 操 作 與 ‘q’ 是 不 同 的 , 如 果 檔 案 中 已 有 的 某 個 成 員 與 插 入 檔 案 的 名 稱 相 同 , 此 成 員 將 被 刪 除 . |
如 果 不 存 在 名 稱 為 files 的 檔 案 , ar 顯 示 一 個 錯 誤 消 息 , 並 且 保 留 檔 案 中 已 有 的 同 名 成 員 .
預 設 情 況 下 , 新 成 員 增 加 到 擋 案 的 末 尾 ; 可 以 通 過 使 用 ‘a’ ‘b’ 或 ‘i’ 等 修 飾 符 指 定 相 對 於 已 有 成 員 的 位 置 .
通 過 使 用 ‘v’ 修 飾 符 會 為 每 個 插 入 的 檔 案 產 生 一 行 輸 出 , 根 據 輸 出 中 的 字 符 ‘a’ 或 ‘r’ 可 以 表 明 該 檔 案 是 追 加 的 (沒 有 刪 除 以 前 的 成 員 ) 還 是 替 換 的 .
|
t |
顯 示 一 個 archive 檔 案 所 包 含 內 容 的 列 表 , 或 檔 案 中 的 由 files 指 出 的 檔 案 列 表 . 通 常 只 顯 示 成 員 的 名 稱 , 如 果 使 用 ‘v’ 修 飾 符 , 可 以 得 到 成 員 的 權 限 , 時 間 屬 性 , 屬 主 , 組 和 大 小 . |
如 果 沒 有 指 出 files, 檔 案 中 的 所 有 檔 案 都 會 列 出 .
如 果 檔 案 中 (稱 為 ‘b.a’) 有 多 個 同 名 成 員 (稱 為 ‘fie’), ‘ar t b.a fie’ 僅 僅 列 出 第 一 個 ; 要 看 到 它 們 的 全 部 , 必 須 要 求 完 整 的 列 表 —在 本 例 中 是 ‘ar t b.a’.
|
x |
從 檔 案 中 抽 取 成 員 (名 稱 為 files) . 如 果 使 用 ‘v’ 修 飾 符 , ar 會 列 出 它 抽 取 的 每 一 個 檔 案 的 名 字 . |
如 果 沒 有 給 出 files, 抽 取 檔 案 中 所 有 的 檔 案 .
可 以 在 操 作 符 p 後 緊 隨 一 定 數 量 的 修 飾 符 mod 以 指 明 操 作 的 各 種 行 為 .
|
a |
增 加 檔 案 到 檔 案 中 已 有 成 員 之 後 , 如 果 使 用 了 修 飾 符 a, 必 須 在 檔 案 名 稱 archive 之 前 以 membername 參 數 的 形 式 給 出 檔 案 中 已 有 成 員 的 名 字 . | ||
|
b |
增 加 檔 案 到 檔 案 中 已 有 成 員 之 前 , 如 果 使 用 了 修 飾 符 b, 必 須 在 檔 案 名 稱 archive 之 前 以 membername 參 數 的 形 式 給 出 檔 案 中 已 有 成 員 的 名 字 . (和 修 飾 符 ‘i’ 相 同 ). | ||
|
c |
建 立 檔 案 . 指 定 的 檔 案 archive 始 終 會 被 建 立 , 如 果 你 要 求 執 行 的 是 更 新 , 通 過 此 修 飾 符 建 立 檔 案 時 會 給 出 一 個 警 告 . | ||
|
f |
截 短 檔 案 成 員 的 名 字 . ar 通 常 允 許 任 意 長 度 的 檔 名 , 但 這 會 導 致 與 某 些 系 統 上 的 ar 出 現 相 容 性 問 題 , 使 用 f 修 飾 符 可 以 在 往 檔 案 中 追 加 檔 案 時 把 名 字 截 短 . | ||
|
i |
插 入 檔 案 到 檔 案 中 已 有 成 員 之 前 , 如 果 使 用 了 修 飾 符 i, 必 須 在 檔 案 名 稱 archive 之 前 以 membername 參 數 的 形 式 給 出 檔 案 中 已 有 成 員 的 名 字 . (與 修 飾 符 ‘b’ 相 同 ). | ||
|
l |
接 受 此 修 飾 符 , 但 不 起 作 用 . | ||
|
N |
使 用 count 參 數 . 本 修 飾 符 用 於 在 檔 案 中 有 多 個 同 名 成 員 的 情 況 . 刪 除 或 抽 取 檔 案 中 給 定 名 字 的 第 count 個 實 例 . | ||
|
o |
抽 取 成 員 時 保 留 他 們 原 始 的 時 間 屬 性 . 如 果 沒 有 此 修 飾 符 , 檔 案 以 抽 取 的 時 間 作 為 它 的 時 間 屬 性 . | ||
|
P |
匹 配 檔 案 中 的 名 字 時 使 用 完 整 的 路 徑 名 . ar 不 能 建 立 使 用 完 整 路 徑 名 的 檔 案 (這 不 符 合 POSIX 標 準 ), 但 其 它 的 檔 案 工 具 能 夠 建 立 , 本 選 項 會 使 ar 在 抽 取 由 其 它 工 具 建 立 的 檔 案 檔 案 時 , 使 用 完 整 的 路 徑 名 去 匹 配 檔 案 中 成 員 的 名 字 . | ||
|
s |
即 使 沒 有 對 檔 案 進 行 改 變 , 用 本 修 飾 符 也 可 以 往 檔 案 中 寫 一 個 目 標 檔 案 的 索 引 或 更 新 已 經 存 在 的 索 引 . 可 以 與 其 它 操 作 一 起 使 用 本 修 飾 符 , 也 可 以 單 獨 使 用 . 對 一 個 檔 案 執 行 ‘ar s’ 與 執 行 ‘ranlib’ 等 價 . | ||
|
S |
不 生 成 檔 案 的 符 號 表 . 這 可 以 加 速 建 立 大 的 檔 案 檔 案 的 過 程 ,但 這 樣 建 立 的 檔 案 不 能 被 連 接 器 使 用 , 為 建 立 符 號 表 , 在 最 後 執 行 ‘ar’ 時 應 該 不 用 ‘S’ 修 飾 符 , 或 者 對 檔 案 執 行 一 次 ‘ranlib’ . | ||
|
u |
通 常 ar r... 把 所 有 列 出 的 檔 案 插 入 到 檔 案 中 , 如 果 希 望 僅 僅 插 入 比 檔 案 中 已 有 成 員 更 新 的 檔 案 時 , 就 應 該 使 用 此 修 飾 符 . ‘u’ 修 飾 符 僅 允 許 與 ‘r’ (替 換 ) 操 作 一 起 使 用 . 某 些 情 況 下 , 由 於 用 ‘q’ 操 作 比 較 檔 案 的 時 間 屬 性 會 失 去 速 度 上 的 優 勢 , 所 以 不 允 許 執 行 ‘qu’ 組 合 操 作 . | ||
|
v |
使 用 本 修 飾 符 可 以 進 行 冗 餘 的 操 作 . 附 加 了 此 修 飾 符 時 , 很 多 操 作 會 顯 示 更 多 的 消 息 , 如 處 理 的 檔 名 等 . | ||
|
V |
顯 示 ar 的 版 本 號 . |
info 中 的 ‘binutils’ 條 目 ; The GNU Binary Utilities, Roland H. Pesch (1991年 10月 ). nm(1), ranlib(1).
Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
This document is distributed under the terms of the GNU Free Documentation License, version 1.1. That license is described in the sources for this manual page, but it is not displayed here in order to make this manual more consise. Copies of this license can also be obtained from: http://www.gnu.org/copyleft/.
Yin Huaming <yhmact [AT] pzh-public.net>
2002/06/23