| HOME / 정보공유 / AIX 명령어 모음

ar
ar ar 명령 ar 명령에는 POWER 기반 플랫폼에서 ar에 대한 정보 및 Itanium 기반 플랫폼에서 ar에 대한 정보가 포함됩니다. POWER 기반 플랫폼의 ar 명령 목적
linkage 편집기가 사용하는, 색인이 달린 라이브러리를 유지합니다.
구문
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -h | -p | -t | -x } [ -X {32|64|32_64}] ArchiveFile [ File ... ]
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -m | -r [ -u ] } [ { -a | -b | -i } PositionName ] [ -X {32|64|32_64}] ArchiveFile File ...
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -d | -q } [ -X {32|64|32_64}] ArchiveFile File ...
ar [ -c ] [ -l ] [ -v ] [ -C ] [ -T ] [ -z ] { -g | -o | -s | -w } [ -X {32|64|32_64}] ArchiveFile
설명
ar 명령은 linkage 편집기가 사용하는 색인 라이브러리를 유지합니다. ar 명령은 하나 이상의 명명된 파일을 ar 아카이브 형식으로 쓰여진 하나의 아카이브 파일로 결합시킵니다. ar 명령은 라이브러리를 작성할 때, 헤더를 전송 가능한 형식으로 작성합니다. 라이브러리를 작성하거나 갱신할 때는, 기호표를 다시 구축합니다. 색인된 아카이브 및 기호 테이블의 형식 및 구조에 대한 정보는 ar 파일 형식을 참조하십시오.
ar 명령이 인식하는 두 가지 파일 형식이 있습니다. 대형 아카이브 형식(Big Archive Format)인 ar_big는 디폴트 파일 형식이고 32비트 및 64비트의 오브젝트 파일을 모두 지원합니다. 소형 아카이브 형식(Small Archive Format)은 AIX 4.3 보다 오래된 버전에서 인식되는 아카이브를 작성하는 데 사용할 수 있습니다. -g 플래그를 보십시오. 64비트 오브젝트가 소형 형식 아카이브에 추가되는 경우, ar은 -g가 지정될 때를 제외하고는 대형 형식으로 변환합니다. 디폴트로, ar 명령만 32비트 오브젝트 파일을 처리하고, 아카이브의 64비트 오브젝트 파일은 무시됩니다. 이 동작을 변경하려면, -X 플래그를 사용하거나 OBJECT_MODE 환경 변수를 설정하십시오.
플래그
ar 명령을 사용할 때, cClosTv 집합에서 몇 개의 선택적 플래그를 지정할 수 있습니다. dhmopqrstwx 플래그 집합에서 하나의 플래그를 지정해야 합니다. -m 또는 -r 플래그를 선택하면, 위치 지정 플래그(-a, -b 또는 -i)도 지정할 수 있습니다. -m 또는 -r 플래그를 선택하면, 위치 지정 플래그(-a, -b 또는 -i)를 지정할 수도 있습니다. -a, -b 또는 -i 플래그에 대해 ArchiveFile(PositionName)에서 파일 이름을 지정할 수도 있습니다. 이 때, 파일 이름은 플래그 리스트 바로 다음에 공백으로 분리하여 지정합니다.
-a PositionName PositionName 매개변수에 의해 식별된 기존 파일 다음에 이름이 지정된 파일의 위치를 지정합니다.
-b PositionName PositionName 매개변수에 의해 식별된 기존 파일 앞에 이름이 지정된 파일의 위치를 지정합니다.
-c 라이브러리가 작성될 때 생성되는 일반 메세지가 표시되지 않도록 합니다.
-C 발췌된 파일이 파일시스템에 있는 동명의 파일을 대체하는 것을 방지합니다.
-d 명명된 파일을 라이브러리로부터 삭제합니다.
-g 아카이브 멤버의 순서를 정해, 최소의 미사용 공간으로 최대의 로더 효율을 가져옵니다. 대부분의 경우에, -g 플래그는 아카이브 멤버가 논리적으로 링크된 순서에 따라 물리적으로 위치를 지정합니다. 그 결과로 생성되는 아카이브는 소형 형식으로 작성되므로, 이 플래그를 사용하여 대형 형식 아카이브를 소형 형식 아카이브로 변환할 수 있습니다. 64비트의 XCOFF 오브젝트가 있는 아카이브는 소형 형식으로 작성하거나 변환할 수 없습니다.
-h 명명된 파일의 헤더에 있는 변경 시간을 현재 날짜와 시각으로 설정합니다. 파일 이름을 지정하지 않으면, ar 명령은 모든 파일 헤더의 시간소인을 설정합니다. 이 플래그는 -z 플래그와 함께 사용할 수 없습니다.
-i PositionName PositionName 매개변수에 의해 식별된 기존 파일 앞에 이름이 지정된 파일의 위치를 지정합니다( -b와 동일).
-l TMPDIR 디렉토리 대신 현재(국지) 디렉토리에 임시 파일을 보관합니다(디폴트로 /tmp).
-m 명명된 파일을 라이브러리 내의 다른 위치로 이동합니다. 명명된 파일은 디폴트에 따라 라이브러리의 끝으로 이동됩니다. 위치 지정 플래그(abi)를 사용하여 다른 위치를 지정할 수 있습니다.
-o 아카이브 멤버의 순서를 정해, 최소의 미사용 공간으로 최대의 로더 효율을 가져옵니다. 대부분의 경우에, -o 플래그는 아카이브 멤버가 논리적으로 링크된 순서에 따라 물리적으로 위치를 지정합니다. 그 결과로 생성되는 아카이브는 대형 아카이브 형식으로 작성되므로, 이 플래그를 사용하여 소형 형식 아카이브를 대형 형식 아카이브로 변환할 수 있습니다.
-p Files 매개변수로 지정된 파일의 내용 또는 파일을 지정하지 않을 경우 ArchiveFile 매개변수에 지정된 모든 파일의 내용을 표준 출력에 기록합니다.
-q 명명된 파일을 라리브러리 끝에 추가합니다. 동일한 파일을 두 번 지정하면, 해당 파일은 라이브러리에 두 번 기록됩니다.
-r 명명된 파일이 이미 라이브러리에 존재하고 있으면, 명명된 파일을 대체합니다. 명명된 파일은 라이브러리에서 대체되는 파일이 있는 위치에 기록되기 때문에 위치 지정 플래그는 아무런 영향을 주지 못합니다. -u 플래그(갱신)와 함께 사용하면, -r 플래그는 라이브러리 파일에 마지막으로 추가된 이후에 수정된 파일만을 대체합니다.
이름이 지정된 파일이 아직 라이브러리에 나타나지 않으면 ar 명령이 파일을 추가합니다. 이 경우, 위치 지정 플래그는 위치에 영향을 미칩니다. 위치를 지정하지 않은 경우, 새로운 파일이 라이브러리의 끝에 위치됩니다. 동일한 파일을 두 번 지정하면, 해당 파일은 라이브러리에 두 번 기록됩니다.
-s ar 명령의 라이브러리 내용 수정 여부와 상관없이 라이브러리 심볼 테이블을 다시 생성하도록 합니다. 라이브러리에서 strip 명령을 사용한 후에 라이브러리 심볼 테이블을 복원하려면, 이 플래그를 사용하십시오.
-t 라이브러리의 목차를 표준 출력 장치에 기록합니다. 파일 이름을 지정하면 지정된 파일만이 출력됩니다. 아무 파일도 지정하지 않으면, -t 플래그는 라이브러리에 있는 모든 파일을 나열합니다.
-T 아카이브 멤버의 이름이 파일시스템이 지원하는 것보다 긴 경우, 이름은 잘립니다. 파일시스템이 아카이브 멤버의 이름을 최대 255자까지 지원하므로, 이 플래그는 아무런 효력이 없습니다.
-u 마지막으로 복사된 이후에 변경된 파일만 복사합니다(앞서 설명한 -r 플래그 참조).
-v 새 라이브러리를 구성하는 각 파일별 상세한 설명을 표준 출력에 기록합니다. -t 플래그와 함께 사용하면 ls -l 명령의 경우처럼 긴 리스트가 출력됩니다. -x 플래그를 사용하면, 각 파일 앞에 이름이 놓이게 됩니다. -h 플래그를 함께 사용하면, 멤버 이름과 갱신된 수정 시간이 나열됩니다.
-w 아카이브 기호표를 표시합니다. 각 기호는 기호가 정의되어 있는 파일의 이름과 함께 나열됩니다.
-x 명명된 파일을 현재 디렉토리로 복사하여 명명된 파일을 발췌합니다. 복사된 파일은 라이브러리에 남아 있는 원래의 파일과 동일한 이름을 갖습니다. 아무 파일도 지정하지 않으면, -t 플래그는 라이브러리에 있는 모든 파일을 나열합니다. 이 프로세스는 라이브러리를 변경하지 않습니다.
-X mode ar 명령이 조사해야 하는 오브젝트 파일의 유형을 지정합니다. mode는 다음 중 하나입니다.
32
32비트 오브젝트 파일만을 처리
64
64비트 오브젝트 파일만 처리
32_64
32비트와 64비트 오브젝트 파일을 모두 처리
디폴트는 32비트 오브젝트 파일을 처리(64비트 오브젝트는 무시)하는 것입니다. mode는 OBJECT_MODE 환경 변수를 사용하여 설정할 수도 있습니다. 예를 들면, OBJECT_MODE=64는 ar 명령이 64비트 오브젝트를 처리하고 32비트 오브젝트는 무시하도록 합니다. -X 플래그는 OBJECT_MODE 변수를 겹쳐씁니다.
-z 아카이브의 임시 사본을 작성하고 사본에 요청된 모든 수정 작업을 수행합니다. 모든 작업이 성공적으로 완료되면, 아카이브의 작업 중인 사본이 원래 사본 위에 복사됩니다. 이 플래그는 -h 플래그와 함께 사용할 수 없습니다.
ArchiveFile 아카이브 파일 이름을 지정하며, 필수 매개변수입니다.
MemberName ... 각 아카이브 멤버의 이름.
종료 상태
이 명령은 다음과 같은 종료값으로 복귀합니다.
0 정상적으로 완료되었습니다.
>0 오류가 발생하였습니다.
예제
라이브러리를 작성하려면, 다음과 같이 입력하십시오.
ar -v -q lib.a strlen.o strcpy.o
lib.a 라이브러리가 없을 경우, 이 명령은 라이브러리를 작성하여 strlen.o 및 strcpy.o 파일의 사본을 입력합니다. lib.a 라이브러리가 있으면, 이 명령이 멤버의 중복 여부를 확인하지 않고 라이브러리 끝에 새 멤버를 추가합니다. v 플래그는 상세 모드를 설정하는데, 이 모드 하에서 ar 명령은 명령 수행의 진행을 나타내는 경과 보고서를 표시합니다.
라이브러리의 목차를 나열하려면, 다음과 같이 입력하십시오.
ar -v -t lib.a
이 명령은 lib.a 라이브러리의 목차를 나열하고, ls -l 명령의 출력과 유사한 긴 리스트를 표시합니다. 멤버 파일 이름만 나열하려면, -v 플래그를 생략하십시오.
라이브러리에 새 멤버를 추가하거나 대체하려면, 다음과 같이 입력하십시오.
ar -v -r lib.a strlen.o strcat.o
이 명령을 실행하면 멤버 strlen.o와 strcat.o가 대체됩니다. lib.a가 예제 1처럼 작성되었다면 strlen.o 멤버가 대체됩니다. strcat.o라는 이름의 멤버는 존재하지 않기 때문에 라이브러리의 끝에 추가됩니다.
새 멤버의 삽입 위치를 지정하려면, 다음과 같이 입력하십시오.
ar -v -r -b strlen.o lib.a strcmp.o
이 명령을 실행하면 strcmp.o 파일이 추가되고, 새 멤버를 strlen.o 멤버 앞에 삽입합니다.
멤버가 변경되어 갱신하려면, 다음과 같이 입력하십시오.
ar -v -r -u lib.a strcpy.o
이 명령을 실행하면 기존의 strcpy.o 멤버가 대체되지만, 파일 strcpy.o가 마지막으로 라이브러리에 추가된 후로 수정된 경우에만 대체됩니다.
라이브러리 멤버의 순서를 변경하려면, 다음과 같이 입력하십시오.
ar -v -m -a strcmp.o lib.a strcat.o strcpy.o
이 명령을 실행하면 멤버 strcat.o와 strcpy.o가 strcmp.o 멤버 바로 다음 위치로 이동됩니다. strcat.o와 strcpy.o의 상대적 순서는 그대로 입니다. 즉, 이동하기 전에 strcpy.o 멤버가 strcat.o 멤버 앞에 있었다면 계속 그 위치를 유지합니다.
라이브러리 멤버를 발췌하려면, 다음과 같이 입력하십시오.
ar -v -x lib.a strcat.o strcpy.o
이 명령은 멤버 strcat.o와 strcpy.o를 각각 strcat.o와 strcpy.o라는 파일에 복사합니다.
멤버를 발췌하여 이름을 변경하려면, 다음과 같이 입력하십시오.
ar -p lib.a strcpy.o >stringcopy.o
이 명령은 멤버 strcpy.o를 stringcopy.o라는 파일에 복사합니다.
멤버를 삭제하려면, 다음과 같이 입력하십시오.
ar -v -d lib.a strlen.o
이 명령은 멤버 strlen.o를 lib.a 라이브러리에서 삭제합니다.
ld 명령으로 작성된 여러 공유 모듈로부터 보존 라이브러리를 작성하려면, 다음과 같이 입력하십시오.
ar -r -v libshr.a shrsub.o shrsub2.o shrsub3.o ...
이 명령은 shrsub.o, shrsub2.o, shrsub3.o 등의 공유 모듈로부터 libshr.a라는 아카이브 라이브러리를 작성합니다. libshr.a 보존 라이브러리를 사용하여 main 프로그램을 컴파일하고 링크하려면, 다음 명령을 사용하십시오.
cc -o main main.c -L/u/sharedlib -lshr
이제 main 프로그램이 실행 가능합니다. libshr.a에 포함되어 있고 main 프로그램이 참조하는 모든 기호는 나중에 판별되기로 표시되었습니다. -l 플래그는 libshr.a 라이브러리에서 기호를 탐색할 것을 지정합니다.
32비트 오브젝트 파일은 무시하고 lib.a의 내용을 나열하려면, 다음과 같이 입력하십시오.
ar -X64 -t -v lib.a
lib.a로부터 모든 32비트 오브젝트 파일을 발췌하려면, 다음과 같이 입력하십시오.
ar -X32 -x lib.a
32비트, 64비트 또는 비오브젝트 파일에 상관없이 lib.a의 모든 파일을 나열하려면, 다음과 같이 입력하십시오.
ar -X32_64 -t -v lib.a
파일
/tmp/ar* 임시 파일을 포함하고 있습니다.
관련 정보
ld 명령, lorder 명령, make 명령, nm 명령, strip 명령.
a.out 파일 형식, ar 파일 형식(Big), ar 파일 형식(Small).
Itanium 기반 플랫폼의 ar 명령
목적
이동 가능한 아카이브 또는 라이브러리 유지합니다.
구문
ar [-V] -key [arg] [posname] afile [name . . . ]
설명
ar 명령은 단일 아카이브 파일에 결합된 파일 그룹을 유지합니다. 이 명령은 주로 라이브러리 파일을 작성하고 갱신하는 데 사용됩니다. 그러나, 비슷한 용도로도 사용할 수 있습니다. 아카이브가 인쇄 가능한 파일로 구성되어 있으면 아카이브 전체를 인쇄할 수 있습니다.
ar 명령이 아카이브를 작성할 때, 모든 기계에서 이동 가능한 형식으로 헤더를 작성합니다. 아카이브 심볼 테이블( ar 파일 형식에서 설명)은 링크 편집기 ld에서 사용하여 오브젝트 파일의 라이브러리를 효율적인 방법으로 여러 번 전달합니다. 아카이브 심볼 테이블은 아카이브에 적어도 하나의 오브젝트 파일이 있을 때 ar 명령에 의해 작성되고 유지됩니다. 아카이브 심볼 테이블 파일의 이름은 특별히 지정되고, 항상 아카이브의 첫번째 파일입니다. 이 파일은 사용자에게 언급되거나 액세스할 수 없습니다. ar 명령을 사용하여 이러한 아카이브의 내용을 작성하거나 갱신할 때마다 심볼 테이블이 다시 작성됩니다. 아래에서 설명된 key의 s 인수는 심볼 테이블이 재작성되도록 합니다.
-V
ar 명령이 버전 번호를 표준 오류에 인쇄하도록 합니다.
-key [arg]
key는 drqtpmx 문자 중 하나로 구성됩니다. arg는 vucs 문자 중 하나 이상으로 구성됩니다. key의 단일 문자로 된 추가 인수는 위치 지정 문자 abi 문자 중 하나에서 선택)라고 하며, key 문자 r 및 m과 함께 사용할 수 있습니다. key 문자는 아래에 설명됩니다.
posname
아카이브에서 다른 파일의 위치를 지정할 때 참조 지점으로 사용되는 아카이브 멤버 이름.
afile
아카이브 파일.
name
아카이브 파일을 구성하는 하나 이상의 파일.
key 문자의 의미는 다음과 같습니다.
-d
이름이 지정된 파일을 아카이브 파일에서 삭제합니다.
-m
이름이 지정된 파일을 아카이브 끝으로 이동합니다. abi 세트의 선택적인 위치 지정 문자가 사용될 경우, posname 인수가 있어야 하고 a 다음에 또는 b나 i posname 앞에 새 파일이 삽입되도록 지정합니다. 그렇지 않으면 새 파일이 끝에 삽입됩니다.
-p
아카이브에서 이름이 지정된 파일을 인쇄합니다.
-q
이름이 지정된 파일을 아카이브 파일 끝에 신속하게 추가합니다. 선택적인 위치 지정 문자는 유효하지 않습니다. 이 명령은 추가된 멤버가 이미 아카이브에 있는지 여부를 확인하지 않습니다. 이 옵션은 큰 아카이브를 부분별로 작성하기 않도록 하는 데 유용합니다.
-r
아카이브 파일에서 이름이 지정된 파일을 대체합니다. 선택적인 인수 u를 r과 함께 사용하면, 수정 날짜가 이미 아카이브에 지정된 파일보다 이후인 파일만 대체합니다. abi 세트의 선택적인 위치 지정 문자가 사용될 경우, posname 인수가 있어야 하고, a 다음에 또는 b나 i posname 앞에 새 파일이 삽입되도록 지정합니다. 그렇지 않으면 새 파일이 끝에 삽입됩니다.
-t
아카이브 파일의 목차를 인쇄합니다. 이름을 지정하지 않으면, 아카이브의 모든 파일이 나열됩니다. 이름을 지정하면 이름이 지정된 파일만 나열됩니다.
-u
이전 파일을 갱신합니다. -r 옵션과 함께 사용할 경우, 아카이브에 있는 파일은 해당 file의 수정 시간이 적어도 아카이브에 있는 파일의 수정 시간만큼 최근 시간일 경우에만 대체됩니다.
-x
이름이 지정된 파일을 발췌합니다. 이름을 지정하지 않으면, 아카이브의 모든 파일이 발췌됩니다. 어떤 경우에도 x로 인해 아카이브 파일이 변경되지 않습니다.
다른 키 인수의 의미는 다음과 같습니다.
v
이전 아카이브 및 구성 파일로부터 새 아카이브 파일 작성에 대한 설명을 파일별로 자세히 제공합니다. -t 옵션과 함께 사용할 경우, 파일에 대한 모든 정보의 긴 리스트를 제공합니다. x, d 또는 r과 함께 사용할 경우, 각 발췌 내용 앞에 파일 이름을 인쇄합니다. p와 함께 사용할 경우, 파일을 표준 출력에 기록합니다.
c
afile이 작성될 때 디폴트로 생성되는 메세지가 표시되지 않도록 합니다.
s
ar 명령이 아카이브 내용을 수정하는 명령과 함께 호출되지 않아도 아카이브 심볼 테이블을 재생성하도록 합니다. 이 명령은 아카이브에서 strip 명령을 사용한 후에 아카이브 심볼 테이블을 복원할 때 유용합니다.
파일
/usr/lib/nls/msg/locale/LC_MESSAGES/uxar
언어별 메세지 파일(environ의 LANG 참조)
관련 정보
a.out 파일 형식, ar 파일 형식.
ld 명령, lorder 명령, strip 명령.
공지
인수 리스트에서 같은 파일을 두 번 언급하면 아카이브에 두 번 삽입될 수 있습니다.
아카이버는 더 이상 임시 파일을 사용하지 않으므로, -l 옵션이 쓸모가 없고 이 옵션이 나타나도 무시됩니다.
규약에 따라 아카이브는 문자 .a의 접미사가 붙습니다.
하이픈이 없는 옵션은 향후 릴리스에서 지원되지 않을 수 있으므로, 현재 선행 하이픈 없이 옵션을 사용하는 응용프로그램은 하이픈을 사용하도록 변경해야 합니다.