ar 명령
용도
연결 편집기가 사용하는 색인화된 라이브러리를 유지합니다.
구문
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -h | -p | -t | -x } [ -X {32|64|32_64|d64| any}] ArchiveFile [ File ...]
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -m | -r [ -u ]} [ { -a | -b | -i } PositionName ] [ -X {32|64|32_64|d64|any}] ArchiveFile File ...
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -d | -q } [ -X {32|64|32_64|d64|any}] ArchiveFile 파일 ...
ar [ -c ] [ -l ] [ -v ] [ -C ] [ -T ] [ -z ] { -g | -o | -s | -w } [ -X {32|64|32_64|d64|any}] ArchiveFile
설명
ar 명령은 연결 편집기가 사용하는 색인화된 라이브러리를 유지합니다. ar 명령은 하나 이상의 이름 붙여진 파일을 ar 아카이브 형식으로 쓰여진 하나의 아카이브 파일로 결합시킵니다. ar 명령은 라이브러리를 작성할 때, 헤더를 전송 가능한 형식으로 작성합니다. 라이브러리를 작성하거나 갱신할 때는, 기호 테이블을 재빌드합니다. 색인화된 아카이브 및 기호 테이블의 형식과 구조에 대한 정보는 ar 파일 형식 항목을 참조하십시오.
ar 명령이 인식하는 두 가지 파일 형식이 있습니다. 대형 아카이브 형식, ar_big은 디폴트 파일 형식이며, 32비트 및 64비트 오브젝트 파일을 모두 지원합니다. 작은 아카이브 형식은 AIX® 4.3 이전 버전에서 인식되는 아카이브를 만드는 데 사용할 수 있습니다( -g 플래그 참조). 64비트 오브젝트가 소형 형식 아카이브에 추가되는 경우, ar은 -g가 지정될 때를 제외하고는 대형 형식으로 먼저 변환됩니다. 기본적으로 ar만 32비트 오브젝트 파일을 처리하고, 아카이브의 64비트 오브젝트 파일은 자동으로 무시됩니다. 이 동작을 변경하려면 -X 플래그를 사용하거나 OBJECT_MODE 환경 변수를 설정하십시오.
플래그
ar 명령을 사용할 때, cClosTv 세트에서 몇 개의 선택적 플래그를 지정할 수 있습니다. dhmopqrstwx 플래그 세트에서 하나의 플래그를 지정해야 합니다. -m 또는 -r 플래그를 선택하는 경우 위치 지정 플래그(-a, -b 또는 -i)도 지정할 수 있습니다. 또한 -a, -b 또는 -i 플래그의 경우 ArchiveFile(PositionName) 내에서 플래그 목록 바로 뒤에 공백으로 분리된 형태로 파일 이름을 지정해야 합니다.
| 항목 | 설명 |
|---|---|
| -a PositionName | PositionName 매개변수에 의해 식별된 기존 파일 다음에 이름이 지정된 파일의 위치를 지정합니다. |
| -b PositionName | PositionName 매개변수에 의해 식별된 기존 파일 앞에 이름이 지정된 파일의 위치를 지정합니다. |
| -c | library가 작성될 때 생성된 일반 메시지를 억제합니다. |
| -c | 추출된 파일이 파일 시스템에 있는 이름이 같은 파일을 대체하는 것을 방지합니다. |
| -d | 이름 지정된 파일을 라이브러리에서 삭제합니다. |
| -g | 아카이브 멤버의 순서를 정해, 최소의 미사용 공간으로 최대의 로더 효율성을 가져옵니다. 대부분의 경우 -g 플래그는 논리적으로 링크된 순서대로 아카이브 멤버를 물리적으로 배치합니다. 그 결과로 생성되는 아카이브는 소형 형식으로 항상 작성되므로, 이 플래그를 사용하여 대형 형식 아카이브를 소형 형식 아카이브로 변환할 수 있습니다. 64비트 XCOFF 오브젝트를 포함하는 아카이브는 작성되거나 소형 형식으로 변환될 수 없습니다. |
| -h | 이름 지정된 파일의 멤버 헤더에 있는 수정 시간을 현재 날짜와 시각으로 설정합니다. 파일 이름을 지정하지 않으면, ar 명령은 모든 멤버 헤더의 시간 소인을 설정합니다. 이 플래그는 -z 플래그와 함께 사용할 수 없습니다. |
| -i PositionName | PositionName 매개변수로 식별된 기존 파일 앞에 이름 지정된 파일을 배치합니다(-b와 동일). |
| -l | TMPDIR 디렉토리(기본적으로 /tmp) 대신, 현재(로컬) 디렉토리에 임시 파일을 배치합니다. |
| -m | 이름 지정된 파일을 라이브러리 내의 일부 다른 위치로 이동합니다. 기본적으로 이름 지정된 파일을 라이브러리의 끝으로 이동됩니다. 위치 지정 플래그(abi)를 사용하여 일부 다른 위치를 지정할 수 있습니다. |
| -o | 아카이브 멤버의 순서를 정해, 최소의 미사용 공간으로 최대의 로더 효율성을 가져옵니다. 대부분의 경우 -o 플래그는 논리적으로 링크된 순서대로 아카이브 멤버를 물리적으로 배치합니다. 그 결과로 생성되는 아카이브는 항상 대형 아카이브 형식으로 작성되므로, 이 플래그를 사용하여 소형 형식 아카이브를 대형 형식 아카이브로 변환할 수 있습니다. |
| -p | 어떠한 파일도 지정하지 않은 경우, ArchiveFile 매개변수로 지정된 모든 파일 또는 Files 매개변수에 이름 지정된 항목의 컨텐츠를 표준 출력으로 기록합니다. |
| -q | 이름 지정된 파일을 라이브러리 끝에 추가합니다. 또한 동일한 파일을 두 번 이름 지정하면, 해당 파일은 라이브러리에 두 번 기록됩니다. |
| -r | 이름 지정된 파일이 이미 라이브러리에 존재하고 있으면, 이름 지정된
파일을 대체합니다. 이름 지정된 파일은 라이브러리에서 대체되는 파일이 있는 동일한 위치에
기록되기 때문에 위치 지정 플래그는 아무런 영향을 주지
못합니다. -u 플래그(갱신)와 함께 사용하면, -r
플래그는 라이브러리 파일에 마지막으로 추가된 이후에 수정된
파일만을 대체합니다. 이름 지정된 파일이 아직 라이브러리에 나타나지 않으면 ar 명령이 이를 추가합니다. 이 경우, 위치 지정 플래그는 위치에 영향을 미칩니다. 위치를 지정하지 않은 경우, 새로운 파일이 라이브러리의 끝에 위치됩니다. 동일한 파일을 두 번 이름 지정하면, 해당 파일은 라이브러리에 두 번 기록됩니다. |
| -s | ar 명령의 라이브러리 컨텐츠 수정 여부와 상관없이 라이브러리 기호 테이블을 다시 생성하도록 합니다. 이 플래그를 사용하여 라이브러리에서 이 strip 명령을 사용한 후 라이브러리 기호 테이블을 복원합니다. |
| -t | 라이브러리의 목차를 표준 출력 장치에 기록합니다. 파일 이름을 지정하면 지정된 파일만 출력됩니다. 아무 파일도 지정하지 않으면, -t 플래그는 라이브러리에 있는 모든 파일을 나열합니다. |
| -t | 아카이브 멤버의 이름이 파일 시스템이 지원하는 것보다 긴 경우, 파일 이름은 잘립니다. 파일 시스템이 아카이브 멤버의 이름을 최대 255자까지 지원하므로, 이 옵션은 아무런 효력이 없습니다. |
| -u | 마지막으로 복사된 이후에 변경된 파일만 복사합니다(앞에서 설명한 -r 플래그 참조). |
| -v | 새 라이브러리를 구성하는 각 파일별 상세한 설명을 표준 출력에 기록합니다. -t 플래그와 함께 사용하면 ls -l 명령의 경우처럼 긴 리스트가 출력됩니다. -x 플래그를 사용하면, 각 파일 앞에 이름이 놓이게 됩니다. -h 플래그를 함께 사용하면, 멤버 이름과 갱신된 수정 시간이 나열됩니다. |
| -w | 아카이브 기호 테이블을 표시합니다. 각 기호는 기호가 정의되어 있는 파일의 이름과 함께 나열됩니다. |
| -x | 이름 지정된 파일을 현재 디렉토리로 복사하여 이름 지정된 파일을 추출합니다. 복사된 파일은 라이브러리에 남아 있는 원래의 파일과 동일한 이름을 갖습니다. 어떠한 파일도 지정하지 않으면, -x 플래그는 라이브러리에 있는 모든 파일을 복사합니다. 이 프로세스는 라이브러리를 변경하지 않습니다. |
| -X 모드 | ar이 조사해야 하는 오브젝트 파일의 유형을
지정합니다. mode는 다음 중 하나여야 합니다.
|
| -z | 아카이브의 임시 사본을 작성하고 사본에 요청된 모든 수정 작업을 수행합니다. 모든 작업이 성공적으로 완료되면, 아카이브의 작업 중인 사본이 원래 사본 위에 복사됩니다. 이 플래그는 -h 플래그와 함께 사용할 수 없습니다. |
| ArchiveFile | 아카이브 파일 이름을 지정하며, 필수입니다. |
| MemberName ... | 개별 아카이브 멤버의 이름입니다. |
종료 상태
이 명령은 다음과 같은 종료값을 리턴합니다.
| 항목 | 설명 |
|---|---|
| 0 | 정상적으로 완료되었습니다. |
| > 0 | 오류가 발생했습니다. |
예
- 라이브러리를 작성하려면,
다음과 같이 입력하십시오.
If thelib.a라이브러리가 없는 경우, 이 명령은 라이브러리를 작성하여 파일의 사본에 입력합니다.strlen.o및strcpy.o.lib.a라이브러리가 존재하지 않으면, 이 명령은 복제 멤버를 검사하지 않고 끝에 새 멤버를 추가합니다. v 플래그는 상세 모드를 설정하는 데, 이 모드에서 ar 명령은 진행을 나타내는 경과 보고서를 표시합니다.ar -v -q lib.a strlen.o strcpy.o - 라이브러리의 목차를 나열하려면, 다음과 같이 입력하십시오.
이 명령은lib.a라이브러리를 실행하여 ls -l 명령의 출력과 유사한 긴 목록을 표시합니다. 멤버 파일 이름만 나열하려면, -v 플래그를 생략하십시오.ar -v -t lib.a - 라이브러리에 새 멤버를 추가하거나 대체하려면, 다음과 같이 입력하십시오.
이 명령은 멤버를 대체합니다.strlen.o및strcat.o.lib.a예제 1에 표시된 대로 작성된 경우,strlen.o멤버가 대체됩니다. 이름 지정된 멤버strcat.o아직 존재하지 않으므로 라이브러리 끝에 추가됩니다.ar -v -r lib.a strlen.o strcat.o - 새 멤버의 삽입 위치를 지정하려면, 다음과 같이 입력하십시오.
이 명령은strcmp.o파일, 앞에 새 멤버 배치strlen.o멤버.ar -v -r -b strlen.o lib.a strcmp.o - 멤버가 변경되어 갱신하려면, 다음과 같이 입력하십시오.
이 명령은 기존strcpy.o파일이 멤버가 아닌 경우에만strcpy.o라이브러리에 마지막으로 추가된 이후에 수정되었습니다.ar -v -r -u lib.a strcpy.o - 라이브러리 멤버의 순서를 변경하려면, 다음과 같이 입력하십시오.
이 명령은 멤버를 이동합니다.strcat.o및strcpy.o다음 위치 바로 뒤에strcmp.o멤버. 다음의 상대 순서입니다.strcat.o및strcpy.o멤버가 보존됩니다. 즉,strcpy.o멤버 앞에strcat.o이동하기 전에 멤버가 계속 이동합니다.ar -v -m -a strcmp.o lib.a strcat.o strcpy.o - 라이브러리 멤버를 발췌하려면,
다음과 같이 입력하십시오.
이 명령은 멤버를 복사합니다.strcat.o및strcpy.o이름 지정된 개별 파일로strcat.o및strcpy.o를 사용하여ar -v -x lib.a strcat.o strcpy.o - 멤버를 발췌하여 이름을 변경하려면,
다음과 같이 입력하십시오.
이 명령은 멤버를 복사합니다.strcpy.o다음 이름의 파일로stringcopy.o.ar -p lib.a strcpy.o >stringcopy.o - 멤버를 삭제하려면,
다음과 같이 입력하십시오.
이 명령은 멤버를 삭제합니다.strlen.o에서lib.a라이브러리.ar -v -d lib.a strlen.o - ld명령으로 작성된 복수의 공유 모듈로부터 아카이브 라이브러리를 작성하려면 다음을 입력하십시오.
이 명령은 다음과 같은 아카이브 라이브러리를 작성합니다.libshr.a공유 모듈에서shrsub.o,shrsub2.o,shrsub3.o기타 등등. 컴파일 및 링크main사용하는 프로그램libshr.a아카이브 라이브러리의 경우 다음 명령을 사용하십시오.ar -r -v libshr.a shrsub.o shrsub2.o shrsub3.o ...
다음main프로그램이 이제 실행 가능합니다. 다음에서 참조하는 모든 기호main프로그램에 의해 포함되는libshr.a아카이브 라이브러리가 지연된 분석을 위해 표시되었습니다. -l 플래그는libshr.a라이브러리에서 기호를 탐색할 수 있습니다.cc -o main main.c -L/u/sharedlib -lshr - 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* | 임시 파일을 포함합니다. |