Manpages

NAME

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’ 列 出 這 種 索 引 , 如 果 檔 案 沒 有 這 類 索 引 , 可 以 使 用 另 外 一 個 稱 爲 ranlibar 程 序 增 加 這 種 索 引 .

ar 至 少 需 要 兩 個 參 數 才 能 運 行 : 一 個 指 明 執 行 的 操 作 ( 可 能 伴 隨 有 其 它 的 修 飾 符 ) , 作 用 的 檔 案 名 字 。 多 數 操 作 可 以 接 受 更 多 的 文 件 參 數 , 指 明 操 作 的 詳 細 文 件 .

選 項

ar 允 許 你 在 第 一 個 命 令 行 參 數 中 以 任 意 順 序 混 合 指 定 操 作 碼 p 和 修 飾 符 mod . 只 要 你 願 意 , 也 可 以 用 破 折 號 作 爲 命 令 行 第 一 個 參 數 的 開 始 .

p 關 鍵 字 指 明 要 執 行 的 操 作 , 只 能 指 明 爲 如 下 之 一 :

d 從 檔 案 中 刪 除 模 塊

. 通 過 files 指 明 要 刪 除 的 模 塊 的 名 稱 ; 如 果 沒

有 指 出 要 刪 除 的 文 件 名 稱 , 檔 案 不 會 改 變 任 何 內 容 . 如 果 給 出 了 ’v’ 修 飾 符 ,ar 會 例 出 它 刪 除 的 每 一 個 模 塊 .

m 用 此 操 作 在 檔 案 中 移 動 成 員

.

如 果 某 個 符 號 名 在 檔 案 的 多 個 成 員 中 有 定 義 , 那 麼 程 序 怎 樣 連 接 檔 案 文 件 得 到 的 結 果 可 能 是 不 同 的 . 如 果 沒 有 爲 m 指 定 修 飾 符 , 由 files 指 出 的 成 員 將 移 動 到 檔 案 的 末 尾 ; 可 以 通 過 ’a’, ’b’ 或 ’i’ 等 修 飾 符 , 指 定 成 員 移 動 的 具 體 位 置 .

p 在 標 準 輸 出 上 打 印 檔 案 中 指 定 的 成 員

. 如 果 給 出 了 ’v’ 修 飾 符 ,

在 打 印 成 員 內 容 之 前 , 先 打 印 成 員 的 名 字 . 如 果 沒 有 指 明 files 參 數 , 檔 案 中 所 有 的 成 員 都 會 被 打 印 出 來 .

q 快 速 追 加 ; 增 加

filesarchive 的 末 尾 , 不 進 行 替 換 檢 查 .

修 飾 符 ’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

中 國 Linux 論 壇 man 手 冊 頁 翻 譯 計 劃

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh