Go to the first, previous, next, last section, table of contents.



ar


ar [-]p[mod [relpos] [count]] archive [member...]
ar -M [ <mri-script ]

The GNU ar program creates, modifies, and extracts from archives. An archive is a single file holding a collection of other files in a structure that makes it possible to retrieve the original individual files (called members of the archive).

The original files' contents, mode (permissions), timestamp, owner, and group are preserved in the archive, and can be restored on extraction.

GNU ar은 아카이브를 만들고 수정한다. 아카이브(archive)는 여러 파일을 묶어둔 파일로, 원래 (아카이브의 멤버라고 불리는) 파일들의 내용을 다시 얻어낼 수 있다.

아카이브에는 원래 파일의 내용, (권한) 모드, 시간, 소유자, 그룹이 저장되어, 추출할 때 복구된다.

GNU ar can maintain archives whose members have names of any length; however, depending on how ar is configured on your system, a limit on member-name length may be imposed for compatibility with archive formats maintained with other tools. If it exists, the limit is often 15 characters (typical of formats related to a.out) or 16 characters (typical of formats related to coff).

GNU ar에서 멤버는 어떤 길이의 이름도 가질 수 있다. 그러나 컴파일 때, 다른 도구와 아카이브 형식을 호환하기 위해 길이에 제한을 걸 수도 있다. 제한이 존재하면 보통 (a.out과 관련된 형식에 전형적인) 15 자이거나 (coff와 관련된 형식에 전형적인) 16 자이다.

ar is considered a binary utility because archives of this sort are most often used as libraries holding commonly needed subroutines.
아카이브가 대부분 공통으로 필요한 함수를 저장하는 라이브러리이기 때문에 ar를 이진 도구라 부른다.

ar creates an index to the symbols defined in relocatable object modules in the archive when you specify the modifier `s'. Once created, this index is updated in the archive whenever ar makes a change to its contents (save for the `q' update operation). An archive with such an index speeds up linking to the library, and allows routines in the library to call each other without regard to their placement in the archive.

You may use `nm -s' or `nm --print-armap' to list this index table. If an archive lacks the table, another form of ar called ranlib can be used to add just the table.

ar는 수정자 `s'를 지정하면 재배치가능한 오브젝트에 정의된 심볼의 색인을 아카이브에 만든다. 한번 만들면, (`q' 갱신 명령어를 제외하고) 내용을 수정할 때마다 색인이 다시 만들어 진다. 이런 색인이 있는 아카이브는 라이브러리로 링크를 빠르게 해주고, 아카이브에서의 위치와 관계없이 아카이브의 함수들이 서로를 호출할 수 있게 한다.

색인을 보려면 `nm -s'`nm --print-armap'를 사용하라. 아카이브에 색인이 없다면 ar의 다른 형식인 ranlib로 색인만을 추가할 수도 있다. (역주; arranlib은 같은 소스에서 컴파일되며, 변수 하나 차이 밖에 없다.)

GNU ar is designed to be compatible with two different facilities. You can control its activity using command-line options, like the different varieties of ar on Unix systems; or, if you specify the single command-line option `-M', you can control it with a script supplied via standard input, like the MRI "librarian" program.

GNU ar는 두 다른 방법으로 사용할 수 있다. 우선 유닉스에서 다른 ar과 같이 명령행을 사용할 수 있다. 또 명령행 옵션 `-M'을 사용하면 MRI 명령어와 비슷한 스크립트를 표준입력으로 읽어들일 수 있다..

명령행으로 ar 사용하기


ar [-X32_64] [-]p[mod [relpos] [count]] archive [member...]

When you use ar in the Unix style, ar insists on at least two arguments to execute: one keyletter specifying the operation (optionally accompanied by other keyletters specifying modifiers), and the archive name to act on.

Most operations can also accept further member arguments, specifying particular files to operate on.

유닉스 형식으로 ar을 사용할 때, 최소한 두 아규먼트가 필요하다. 하나는 (선택적인 수정자와 함께) 작업을 지정하고, 다른 하나는 대상 아카이브 이름이다.

대부분 작업은 추가로 작업할 파일을 member 아규먼트로 받는다.

GNU ar allows you to mix the operation code p and modifier flags mod in any order, within the first command-line argument.

If you wish, you may begin the first command-line argument with a dash.

GNU ar는 첫 명령행 아규먼트에서 명령코드 p와 수정자 mod를 어떤 순서로도 사용가능하다.

원한다면 첫 명령행 아규먼트를 빼기로 시작해도 된다.

The p keyletter specifies what operation to execute; it may be any of the following, but you must specify only one of them:

명령코드 p는 수행할 작업을 지시한다. 다음 중 오직 하나만 가능하다.

d
Delete modules from the archive. Specify the names of modules to be deleted as member...; the archive is untouched if you specify no files to delete. If you specify the `v' modifier, ar lists each module as it is deleted.
아카이브에서 모듈을 삭제(delete)한다. 삭제할 모듈 이름들은 member...와 같이 지칭한다. 삭제할 파일이 없다면 아카이브를 건들지 않는다.
m
Use this operation to move members in an archive. The ordering of members in an archive can make a difference in how programs are linked using the library, if a symbol is defined in more than one member. If no modifiers are used with m, any members you name in the member arguments are moved to the end of the archive; you can use the `a', `b', or `i' modifiers to move them to a specified place instead.
아카이브에서 멤버를 옮긴다(move). 심볼이 여러 멤버에 정의되있다면 아카이브에서 멤버의 순서는 라이브러리와 링크되는 프로그램에 영향을 준다. m과 함께 사용된 수정자가 없다면, member 아규먼트에 지시한 멤버는 아카이브 으로 이동한다. 다른 곳으로 옮기려면 `a'`b', `i'을 사용한다.
p
Print the specified members of the archive, to the standard output file. If the `v' modifier is specified, show the member name before copying its contents to standard output. If you specify no member arguments, all the files in the archive are printed.
지정한 멤버를 표준출력으로 출력한다(print). 수정자 `v'가 사용되면 내용을 출력하기 전에 멤버 이름을 출력한다. 어떤 member 아규먼트도 사용하지 않으면 아카이브의 모든 파일을 출력한다.
q
Quick append; Historically, add the files member... to the end of archive, without checking for replacement. The modifiers `a', `b', and `i' do not affect this operation; new members are always placed at the end of the archive. The modifier `v' makes ar list each file as it is appended. Since the point of this operation is speed, the archive's symbol table index is not updated, even if it already existed; you can use `ar s' or ranlib explicitly to update the symbol table index. However, too many different systems assume quick append rebuilds the index, so GNU ar implements q as a synonym for r.
빠른 추가(quick append). 역사적으로 파일 member...을 대체가 가능한지 검사하지 않고 archive 끝에 추가한다. 수정자 `a', `b', `i'는 이 작업에 영향을 주지 않는다. 멤버는 항상 아카이브 끝에 추가된다. 수정자 `v'는 파일이 추가될 때 파일명을 출력한다. 이 작업의 장점은 속도이기 때문에 아카이브의 심볼표 색인이 있더라도 갱신되지 않는다. `ar s'ranlib로 심볼표 색인을 명시적으로 갱신할 수 있다. 그러나 많은 시스템에서 이 작업이 색인을 갱신한다고 가정하여, GNU ar에서 qr과 같다.
r
Insert the files member... into archive (with replacement). This operation differs from `q' in that any previously existing members are deleted if their names match those being added. If one of the files named in member... does not exist, ar displays an error message, and leaves undisturbed any existing members of the archive matching that name. By default, new members are added at the end of the file; but you may use one of the modifiers `a', `b', or `i' to request placement relative to some existing member. The modifier `v' used with this operation elicits a line of output for each file inserted, along with one of the letters `a' or `r' to indicate whether the file was appended (no old member deleted) or replaced.
파일 member...을 archive에 (대체하여) 추가한다. 이 작업은 같은 이름의 기존 멤버가 삭제된다는 점에서 `q'과 다르다. 추가할 member...의 파일이 존재하지 않으면 오류문을 출력하고 같은 이름의 기존 멤버를 그대로 둔다. 기본적으로 새 멤버는 파일 끝에 추가된다. 그러나 수정자 `a', `b', `i'를 사용하여 기존 멤버에 상대적으로 위치시킬 수 있다. 수정자 `v'는 추가되는 파일마다 한 줄씩 출력한다. (기존 멤버가 삭제되지 않고) 파일이 추가되었는지 대체되었는지는 `a'(추가)와 `r'(대체)로 표시된다.
t
Display a table listing the contents of archive, or those of the files listed in member... that are present in the archive. Normally only the member name is shown; if you also want to see the modes (permissions), timestamp, owner, group, and size, you can request that by also specifying the `v' modifier. If you do not specify a member, all files in the archive are listed.
archive의 내용이나 member...에 명시된 파일의 를 출력한다. 보통 멤버 이름만 출력한다. (권한) 모드, 시간, 소유자, 그룹, 크기들도 같이 보고 싶다면 수정자 `v'를 사용하라. member를 지정하지 않으면 아카이브의 모든 멤버가 출력된다. If there is more than one file with the same name (say, `fie') in an archive (say `b.a'), `ar t b.a fie' lists only the first instance; to see them all, you must ask for a complete listing--in our example, `ar t b.a'.
아카이브에 같은 이름을 가진 여러 파일이 있다면 (예를 들어 아카이브 `b.a'에 파일 `fie'이 여러개 있다면), `ar t b.a fie'은 첫번째 것만을 출력한다. 모두를 보고 싶다면 `ar t b.a'와 같이 모든 멤버를 출력해야 한다.
x
Extract members (named member) from the archive. You can use the `v' modifier with this operation, to request that ar list each name as it extracts it. If you do not specify a member, all files in the archive are extracted.
아카이브에서 이름이 member인 멤버를 추출한다(extract). (즉, 아카이브에서 멤버를 삭제하지 않고 내용만 얻는다.) 수정자 `v'를 사용하면 각 멤버가 추출될 때마다 파일명을 출력한다. member를 지정하지 않으면 모든 멤버가 추출된다.

A number of modifiers (mod) may immediately follow the p keyletter, to specify variations on an operation's behavior:

작업의 세부사항을 지정하는 수정자(mod)는 명령코드 p 바로 뒤에 나온다.

a
Add new files after an existing member of the archive. If you use the modifier `a', the name of an existing archive member must be present as the relpos argument, before the archive specification.
새 파일을 기존 멤버 뒤에(after) 추가한다. `a' 수정자를 사용하면 명령행에서 archive 전에, 기존 멤버가 relpos 아규먼트로 지정되야 한다.
b
Add new files before an existing member of the archive. If you use the modifier `b', the name of an existing archive member must be present as the relpos argument, before the archive specification. (same as `i').
새 파일을 기존 멤버 전에(before) 추가한다. `b' 수정자를 사용하면 명령행에서 archive 전에, 기존 멤버가 relpos 아규먼트로 지정되야 한다. (`i'과 같다.)
c
Create the archive. The specified archive is always created if it did not exist, when you request an update. But a warning is issued unless you specify in advance that you expect to create it, by using this modifier.
아카이브를 생성한다(create). 갱신을 하려는 archive가 없다면 새로 만든다. 이 수정자로 미리 생성할지를 알려주지 않았다면 경고가 발생한다.
f
Truncate names in the archive. GNU ar will normally permit file names of any length. This will cause it to create archives which are not compatible with the native ar program on some systems. If this is a concern, the `f' modifier may be used to truncate file names when putting them in the archive.
아카이브에서 긴 이름을 짤라낸다. GNU ar는 어떤 길이의 이름도 허용한다. 그래서 몇몇 시스템에서 기존의 ar과 호환되지 않는 아카이브를 만들 수 있다. 이 경우 수정자 `f'은 파일을 아카이브에 저장할 때 긴 이름을 짤라낸다.
i
Insert new files before an existing member of the archive. If you use the modifier `i', the name of an existing archive member must be present as the relpos argument, before the archive specification. (same as `b').
새 파일을 기존 멤버 전에 추가한다. `i' 수정자를 사용하면 명령행에서 archive 전에, 기존 멤버가 relpos 아규먼트로 지정되야 한다. (`b'과 같다.)
l
This modifier is accepted but not used.
이 수정자는 쓰이지 않는다.
N
Uses the count parameter. This is used if there are multiple entries in the archive with the same name. Extract or delete instance count of the given name from the archive.
count 파라미터를 사용한다. 아카이브에 같은 이름의 여러 멤버가 있을 때, count번째 멤버를 지칭한다.
o
Preserve the original dates of members when extracting them. If you do not specify this modifier, files extracted from the archive are stamped with the time of extraction.
멤버을 추출할 때 원래 날짜를 유지한다. 이 수정자를 사용하지 않으면 추출할 당시 시간이 사용된다.
P
Use the full path name when matching names in the archive. GNU ar can not create an archive with a full path name (such archives are not POSIX complaint), but other archive creators can. This option will cause GNU ar to match file names using a complete path name, which can be convenient when extracting a single file from an archive created by another tool.
아카이브에서 이름을 찾을 때 패스를 사용한다. GNU ar는 패스로 아카이브를 (이런 아카이브는 POSIX 호환이지 않다) 만들 수 없지만, 다른 도구는 이렇게 아카이브를 만들기도 한다. 이 옵션은 GNU ar이 다른 도구로 만든 아카이브에서 파일을 추출할 때 패스로 파일명을 찾게 한다.
s
Write an object-file index into the archive, or update an existing one, even if no other change is made to the archive. You may use this modifier flag either with any operation, or alone. Running `ar s' on an archive is equivalent to running `ranlib' on it.
아카이브에 오브젝트 파일 색인을 쓰거나 (아카이브에 어떤 변화가 없어도) 갱신한다. 이 수정자는 어떤 작업과 같이 쓰거나, 혼자 사용할 수 있다. `ar s'`ranlib'과 동일하다.
S
Do not generate an archive symbol table. This can speed up building a large library in several steps. The resulting archive can not be used with the linker. In order to build a symbol table, you must omit the `S' modifier on the last execution of `ar', or you must run `ranlib' on the archive.
아카이브 심볼표를 만들지 않는다. 그래서 여러 과정으로 큰 라이브러리를 만들 때 속도를 향상한다. 결과로 생성된 아카이브를 링커와 사용할 수 없을지도 모른다. 심볼표를 만들려면 마지막 링크시 `S' 수정자를 사용하지 않거나, 아카이브에 `ranlib'를 실행하면 된다.
u
Normally, `ar r'... inserts all files listed into the archive. If you would like to insert only those of the files you list that are newer than existing members of the same names, use this modifier. The `u' modifier is allowed only for the operation `r' (replace). In particular, the combination `qu' is not allowed, since checking the timestamps would lose any speed advantage from the operation `q'.
보통 `ar r'는 모든 파일을 아카이브에 집어넣는다. 그러나 기존에 같은 이름을 한 멤버가 없는 파일 추가하려고 할 때 이 수정자를 사용한다. 수정자 `u'`r' 작업에만 가능하다. 특히 `qu'는 시간을 검사하여 `q'의 속도 이득을 없애기 때문에 가능하지 않다.
v
This modifier requests the verbose version of an operation. Many operations display additional information, such as filenames processed, when the modifier `v' is appended.
작업의 세부적인 내용을 출력한다. 많은 작업은 `v'이 사용되면 처리하는 파일과 같은 추가 정보를 출력한다.
V
This modifier shows the version number of ar.
ar의 버전을 출력한다.

ar ignores an initial option spelt -X32_64, for compatibility with AIX. The behaviour produced by this option is the default for GNU ar. ar does not support any of the other -X options; in particular, it does not support -X32 which is the default for AIX ar.
ar은 AIX과 호환을 위한 -X32_64은 무시한다. GNU ar은 기본적으로 이 옵션이 의도하는 행동을 한다. ar은 다른 -X 옵션은 지원하지 않는다. 특히 AIX ar의 기본인 -X32는 지원하지 않는다.

스크립트로 ar 실행하기


ar -M [ <script ]

If you use the single command-line option `-M' with ar, you can control its operation with a rudimentary command language. This form of ar operates interactively if standard input is coming directly from a terminal. During interactive use, ar prompts for input (the prompt is `AR >'), and continues executing even after errors. If you redirect standard input to a script file, no prompts are issued, and ar abandons execution (with a nonzero exit code) on any error.

The ar command language is not designed to be equivalent to the command-line options; in fact, it provides somewhat less control over archives. The only purpose of the command language is to ease the transition to GNU ar for developers who already have scripts written for the MRI "librarian" program.

ar에 명령행 옵션 `-M'만을 사용하면, 초보적인 명령 언어로 작동한다. 그래서 표준입력이 터미널에서 오면 대화적으로 작동한다. 이 경우 ar는 (`AR >') 프롬프트를 출력하고, 오류를 만나도 실행을 계속한다. 표준입력을 스크립트 파일로 리다이렉트하면 프롬프트가 출력되지 않고, 오류를 만나면 (0이 아닌 종료코드로) 실행을 그만둔다.

ar 명령 언어는 명령행 옵션과 대응하도록 설계되지 않았다. 사실 기능이 더 적다. 명령 언어의 유일한 목적은 이미 MRI 라이브러리 프로그램을 위해 스크립트를 작성한 개발자가 쉽게 GNU ar로 옮겨올 수 있게 하기 위함이다.

The syntax for the ar command language is straightforward:
명령 언어의 문법은 쉽다.

Here are the commands you can use in ar scripts, or when using ar interactively. Three of them have special significance:

OPEN or CREATE specify a current archive, which is a temporary file required for most of the other commands.

SAVE commits the changes so far specified by the script. Prior to SAVE, commands affect only the temporary copy of the current archive.

다음은 스크립트나 대화적으로 사용할 수 있는 명령어들이다. 이중 3 명령어는 특별히 중요하다.

OPENCREATE는 대부분 명령어가 임시파일로 사용하는 현재 아카이브를 지정한다.

SAVE는 아직까지 변화를 저장한다. SAVE를 사용하기 전까지는 명령어들은 현재 아카이브의 임시 본사본을 사용한다.

ADDLIB archive
ADDLIB archive (module, module, ... module)
Add all the contents of archive (or, if specified, each named module from archive) to the current archive. Requires prior use of OPEN or CREATE.
archive의 모든 내용(혹은 archivemodule)을 현재 아카이브에 추가한다. 전에 OPENCREATE을 사용했어야 한다.
ADDMOD member, member, ... member
Add each named member as a module in the current archive. Requires prior use of OPEN or CREATE.
현재 아카이브에 모듈로서 각 member을 추가한다. 전에 OPENCREATE을 사용했어야 한다.
CLEAR
Discard the contents of the current archive, canceling the effect of any operations since the last SAVE. May be executed (with no effect) even if no current archive is specified.
현재 아카이브 내용을 버리고, 마지막 SAVE 이후의 명령어들을 취소한다. 현재 아카이브가 지정되지 않아도 (기능은 없지만) 사용할 수 있다.
CREATE archive
Creates an archive, and makes it the current archive (required for many other commands). The new archive is created with a temporary name; it is not actually saved as archive until you use SAVE. You can overwrite existing archives; similarly, the contents of any existing file named archive will not be destroyed until SAVE.
아카이브를 만들고 이를 (많은 명령어가 필요로 하는) 현재 아카이브로 사용한다. 새 아카이브는 임시 이름으로 생성된다. SAVE를 사용할 때까지 실제로 archive에 저장되지 않는다. 기존 아카이브를 덮어쓸 수 있다. 그러나 SAVE 때까지 archive라는 기존 파일이 파괴되지 않는다.
DELETE module, module, ... module
Delete each listed module from the current archive; equivalent to `ar -d archive module ... module'. Requires prior use of OPEN or CREATE.
현재 아카이브에서 module을 지운다. `ar -d archive module ... module'와 동일하다. 전에 OPENCREATE을 사용했어야 한다.
DIRECTORY archive (module, ... module)
DIRECTORY archive (module, ... module) outputfile
List each named module present in archive. The separate command VERBOSE specifies the form of the output: when verbose output is off, output is like that of `ar -t archive module...'. When verbose output is on, the listing is like `ar -tv archive module...'. Output normally goes to the standard output stream; however, if you specify outputfile as a final argument, ar directs the output to that file.
archive에 있는 각 module를 열거한다. 별도의 VERBOSE 명령어는 출력 형식을 지정한다. 자세한 출력을 끄면 `ar -t archive module...'과 같고, 끼면 `ar -tv archive module...'과 같다. 보통 표준출력에 출력된다. 마지막 아규먼트로 outputfile을 지정하면 그 파일에 출력을 한다.
END
Exit from ar, with a 0 exit code to indicate successful completion. This command does not save the output file; if you have changed the current archive since the last SAVE command, those changes are lost.
성공적인 실행을 나타내는 종료코드 0으로 종료한다. 이 명령어는 출력 파일을 저장하지 않는다. 마지막 SAVE 명령어 이후에 현재 아카이브를 변경했다면 그 변화는 사라진다.
EXTRACT module, module, ... module
Extract each named module from the current archive, writing them into the current directory as separate files. Equivalent to `ar -x archive module...'. Requires prior use of OPEN or CREATE.
현재 아카이브에서 module을 추출하여 현재 디렉토리에 별도의 파일로 저장한다. `ar -x archive module...'와 동일하다. 전에 OPENCREATE을 사용했어야 한다.
LIST
Display full contents of the current archive, in "verbose" style regardless of the state of VERBOSE. The effect is like `ar tv archive'. (This single command is a GNU ar enhancement, rather than present for MRI compatibility.) Requires prior use of OPEN or CREATE.
VERBOSE 상태와 관계없이 자세하게 현재 아카이브의 모든 내용을 출력한다. `ar tv archive'와 같다. (이 명령어는 MRI 호환성 때문이 아니고 GNU ar 확장이다.) 전에 OPENCREATE을 사용했어야 한다.
OPEN archive
Opens an existing archive for use as the current archive (required for many other commands). Any changes as the result of subsequent commands will not actually affect archive until you next use SAVE.
(많은 명령어가 필요로 하는) 현재 아카이브로 사용할 기존의 아카이브를 연다. 다음에 나오는 명령어들은 SAVE를 사용할 때까지 실제로 archive에 영향을 주지 못한다.
REPLACE module, module, ... module
In the current archive, replace each existing module (named in the REPLACE arguments) from files in the current working directory. To execute this command without errors, both the file, and the module in the current archive, must exist. Requires prior use of OPEN or CREATE.
현재 디렉토리의 파일로 현재 아카이브의 (아규먼트로 주어진) module을 대체한다. 두 파일이 모두 존재하지 않으면 오류가 발생한다. 전에 OPENCREATE을 사용했어야 한다.
VERBOSE
Toggle an internal flag governing the output from DIRECTORY. When the flag is on, DIRECTORY output matches output from `ar -tv '....
DIRECTORY 출력을 조정하는 내부 플래그를 키고 끈다. 이 플래그가 켜지면 DIRECTORY의 출력은 `ar -tv '...와 같다.
SAVE
Commit your changes to the current archive, and actually save it as a file with the name specified in the last CREATE or OPEN command. Requires prior use of OPEN or CREATE.
현재 아카이브로 변화를 반영한다. 즉, 마지막 CREATE 명령어나 OPEN 명령어에서 지정한 이름에 실제로 저장한다. 전에 OPENCREATE을 사용했어야 한다.


Go to the first, previous, next, last section, table of contents.