리눅스 명령 이해하기 : Ar

GNU ar 프로그램 아카이브를 생성 , 수정 및 압축을 풉니 다. 아카이브 는 원래 개별 파일 (아카이브 구성원 이라고 함)을 검색 할 수있는 구조의 다른 파일 모음을 보유한 단일 파일입니다.

개요

원본 파일의 내용, 모드 (사용 권한), 타임 스탬프, 소유자 및 그룹은 아카이브에 보존되며 추출시 복원 할 수 있습니다.

GNU ar 은 어떤 길이의 이름을 가진 아카이브를 유지 관리 할 수 ​​있습니다. 그러나 시스템에 ar 이 구성되는 방법에 따라 다른 도구로 유지되는 아카이브 형식과의 호환성을 위해 구성원 이름 길이 제한이 부과 될 수 있습니다. 존재하는 경우 한도는 종종 15 자 (a.out과 관련된 형식) 또는 16 자 (일반적으로 coff와 관련된 형식)입니다.

ar 은이 유형의 아카이브가 공통적으로 필요한 서브 루틴을 보관하는 라이브러리로 사용되기 때문에 이진 유틸리티로 간주됩니다.

ar 은 수정자를 지정할 때 아카이브의 변동 가능 객체 모듈에 정의 된 심볼에 대한 인덱스를 만듭니다. 일단 생성되면 ar 이 내용을 변경할 때마다 ( q 업데이트 작업을 위해 저장)이 인덱스가 아카이브에서 업데이트됩니다. 이러한 색인을 가진 아카이브는 라이브러리에 연결하는 속도를 높이고 라이브러리의 루틴이 아카이브의 배치와 상관없이 서로 호출 할 수있게합니다.

이 색인 테이블을 나열하려면 nm -s 또는 nm --print-armap 을 사용할 수 있습니다. 아카이브에 테이블이 없으면 ranlib 라는 다른 형식의 ar을 사용하여 테이블 만 추가 할 수 있습니다.

GNU ar 은 두 가지 다른 기능과 호환되도록 설계되었습니다. Unix 시스템 에서 ar 의 다양한 종류와 같은 명령 행 옵션을 사용하여 활동을 제어 할 수 있습니다. 또는 단일 명령 행 옵션 -M 을 지정하면 MRI``librarian ''프로그램과 같이 표준 입력을 통해 제공되는 스크립트로 제어 할 수 있습니다.

개요

ar [ -X32_64 ] [ - ] p [ mod [ relpos ] [ count ]] 아카이브 [ member ...]

옵션

GNU ar을 사용하면 첫 번째 명령 줄 인수 내에서 임의의 순서로 작업 코드 p 와 수정 자 플래그 mod 를 혼합 할 수 있습니다.

원하는 경우 대시로 첫 번째 명령 줄 인수를 시작할 수 있습니다.

p keyletter는 실행할 작업을 지정합니다. 다음 중 하나 일 수 있지만 그 중 하나만 지정해야합니다.

아카이브에서 모듈을 삭제 하십시오. 구성원 으로 삭제할 모듈의 이름을 지정하십시오 ...; 삭제할 파일을 지정하지 않으면 아카이브는 변경되지 않습니다.

v 수정자를 지정하면 ar 은 h 제된 각 모듈을 나열합니다.

이 작업을 사용하여 아카이브의 멤버를 이동 합니다.

심볼이 둘 이상의 멤버에서 정의 된 경우 아카이브의 멤버 순서는 라이브러리를 사용하여 프로그램이 링크되는 방법에 차이를 만들 수 있습니다.

"m"과 함께 수식어가 사용되지 않으면, 멤버 인수에 이름을 붙인 모든 멤버가 아카이브의 으로 이동합니다. a , b 또는 i 한정자를 사용하여 지정된 위치로 이동시킬 수 있습니다.

지정된 아카이브 멤버를 표준 출력 파일에 인쇄 하십시오. v 수정자가 지정된 경우 내용을 표준 출력에 복사하기 전에 구성원 이름을 표시하십시오.

멤버 인수를 지정하지 않으면 아카이브의 모든 파일이 인쇄됩니다.

빠른 추가 ; 역사적으로 교체를 확인하지 않고 파일 끝에 member ...를 아카이브 끝에 추가하십시오.

수정 자 a , bi 는이 작업에 영향을주지 않습니다 . 새 멤버는 항상 아카이브의 끝에 배치됩니다.

수정 자 v 는 각 파일이 추가 될 때 ar을 나열합니다.

이 작업의 요점은 속도이기 때문에 아카이브의 심볼 테이블 인덱스는 이미 존재하더라도 업데이트되지 않습니다. ar s 또는 ranlib을 명시 적으로 사용하여 심볼 테이블 인덱스를 업데이트 할 수 있습니다.

그러나 너무 많은 다른 시스템에서는 빠른 추가가 색인을 다시 작성한다고 가정하므로 GNU ar은 "q"를 "r"의 동의어로 구현합니다.

아르 자형

파일 멤버아카이브에 삽입합니다 ( 대체 포함 ). 이 작업은 기존 멤버가 이름이 추가 된 멤버와 일치하면 기존 멤버가 삭제된다는 점에서 q 와 다릅니다.

member ...에 명명 된 파일 중 하나가 없으면 ar 은 오류 메시지를 표시하고 해당 이름과 일치하는 아카이브의 기존 구성원을 방해하지 않습니다.

기본적으로 새 멤버는 파일의 끝에 추가됩니다. 그러나 a , b 또는 i 수정 자 중 하나를 사용하여 기존 구성원과 관련된 배치를 요청할 수 있습니다.

이 조작에 사용 된 수정자는 파일이 추가되었는지 (이전 구성원이 h 제되지 않았는지) 대체되었는지를 나타 내기 위해 문자 a 또는 r 중 하나와 함 2 삽입 된 각 파일에 대한 출력 행을 추출합니다.

아카이브 의 내용 또는 아카이브 에있는 member ...에 나열된 파일의 내용을 나열하는 테이블을 표시합니다. 일반적으로 멤버 이름 만 표시됩니다. 모드 (사용 권한), 시간 소인, 소유자, 그룹 W 크기도보고자 할 경우 v 수정 자도 지정하여이를 요청할 수 있습니다.

구성원을 지정하지 않으면 아카이브의 모든 파일이 나열됩니다.

아카이브 (예를 들어 ba )에 같은 이름의 파일이 두 개 이상있는 경우 ar t ba fie 는 첫 번째 인스턴스 만 나열합니다. 그들 모두를 보시려면, 우리의 예에서 ar t ba 라는 완전한 리스팅을 요구해야합니다.

엑스

아카이브에서 구성원 (이름이 지정된 구성원 )을 추출 하십시오. 이 조작으로 v 수정자를 사용하여 각 이름을 추출 할 때 ar 을 요청할 수 있습니다.

구성원을 지정하지 않으면 아카이브의 모든 파일이 추출됩니다.

많은 수정 자 ( mod )가 p 키 레터 바로 다음에 동작의 동작에 대한 변형을 지정할 수 있습니다.

에이

기존 아카이브 구성원 다음에 새 파일 추가하십시오. 수정 자 a 를 사용하는 경우, 아카이브 스펙 앞에 기존 아카이브 멤버의 이름이 relpos 인수로 있어야합니다.

아카이브의 기존 구성원 앞에 새 파일을 추가하십시오. 수정 자 b 를 사용하는 경우, 아카이브 스펙 앞에 기존 아카이브 멤버의 이름이 relpos 인수로 있어야합니다. ( i 와 동일).

기음

아카이브를 만듭니다 . 지정된 아카이브 는 갱신을 요청할 때 존재하지 않는 경우 항상 작성됩니다. 그러나이 수정자를 사용하여 미리 작성하려고하지 않는 한 경고가 _ 행됩니다.

에프

아카이브에서 이름을 자릅니다. GNU ar 은 보통 어떤 길이의 파일 이름도 허용 할 것이다. 이로 인해 일부 시스템에서 원시 ar 프로그램과 호환되지 않는 아카이브가 작성됩니다. 이것이 중요하다면, 파일 이름을 아카이브에 넣을 때 파일 이름을 자르기 위해 f 수정자가 사용될 수 있습니다.

나는

아카이브의 기존 구성원 앞에 새 파일을 삽입하십시오. 수정 자 i 를 사용하는 경우 아카이브 스펙 앞에 기존 아카이브 멤버의 이름이 relpos 인수로 있어야합니다. ( b 와 동일).

이 수정자는 수락되었지만 사용되지 않았습니다.

count 매개 변수를 사용합니다. 이 이름은 동일한 이름의 아카이브에 여러 항목이있는 경우에 사용됩니다. 아카이브에서 주어진 이름의 인스턴스 카운트 를 추출하거나 삭제합니다.

영형

회원들을 추출 할 때 회원들의 원래 날짜를 보존하십시오. 이 수정자를 지정하지 않으면 아카이브에서 추출 된 파일에 추출 시간이 찍 힙니다.

아카이브에서 이름을 일치시킬 때 전체 경로 이름을 사용하십시오. GNU ar 은 전체 경로 이름을 가진 아카이브를 만들 수 없습니다 (아카이브는 POSIX complaint가 아닙니다).하지만 다른 아카이브 작성자는 할 수 있습니다. 이 옵션을 사용하면 GNU ar 이 전체 경로 이름을 사용하여 파일 이름을 일치 시키게되므로 다른 도구로 만든 아카이브에서 하나의 파일을 추출 할 때 편리합니다.

에스

아카이브에 다른 변경 사항이 없더라도 아카이브에 오브젝트 파일 색인을 작성하거나 기존 파일 색인을 갱신하십시오. 이 수정 자 플래그는 모든 조작 또는 단독으로 사용할 수 있습니다. 아카이브에서 ars 를 실행하는 것은 ranlib 를 실행하는 것과 같습니다.

에스

아카이브 기호 테이블을 생성하지 마십시오. 이렇게하면 여러 단계로 대형 라이브러리를 빠르게 작성할 수 있습니다. 결과 아카이브는 링커와 함께 사용할 수 없습니다. 심볼 테이블을 만들려면 ar 의 마지막 실행시 S 수정자를 생략하거나 아카이브에서 ranlib 를 실행해야합니다.

일반적으로 ar r ...은 나열된 모든 파일을 아카이브에 삽입합니다. 같은 이름의 기존 멤버보다 새로운 파일 목록을 삽입하려면이 수정자를 사용하십시오. u 수정자는 작업 r (대체)에만 허용됩니다. 특히, 타임 스탬프를 검사하면 q 작업의 속도 이점을 잃어 버리기 때문에 조합 키는 허용되지 않습니다.

V

이 수정자는 작업의 자세한 버전을 요청합니다. 많은 조작은 수정 자 v 가 추가 될 때 처리 된 파일 이름과 같은 추가 정보를 표시합니다.

V

이 수정자는 ar 의 버전 번호를 표시합니다.

ar 은 AIX와의 호환성을 위해 -X32_64 철자가 붙은 초기 옵션을 무시합니다. 이 옵션으로 생성 된 동작은 GNU ar 의 기본값입니다. ar 은 다른 -X 옵션을 지원하지 않습니다. 특히 AIX ar 의 기본값 인 -X32 를 지원하지 않습니다.

중요 : man 명령 ( % man )을 사용하여 특정 컴퓨터에서 명령이 어떻게 사용되는지보십시오.