AR(5)

명칭
ar - 아카이브(archive) (프로그램 라이브러리) 파일 포맷

서식
<ar.h>

해설
아카이브(archive) 명령 ar (은)는 복수의 파일을 하나로 정리합니다. 아카이브(archive)는 주로 링크 에디터 ld(1) (을)를 사용해 로드하기 위한 오브젝트 파일의 프로그램 라이브러리로서 사용합니다.

ar 에 의해 작성된 파일은 ``매직''string "! <arch>\n" 로 시작되어 있습니다. 아카이브(archive)의 나머지는 오브젝트로부터 되어, 그 각각은 파일의 헤더와 파일명 (옵션)과 파일의 내용으로부터 구성됩니다. 헤더는 다른 머신 아키텍쳐간에 호환성이 있는 것으로, 파일의 내용이 인자 가능한 것이면 아카이브(archive) 그 자체도 인자 가능해집니다.

헤더는, 가변장의 ASCII 의 필드 6 개(살)로 거기에 계속되는 2 캐릭터의 종단으로부터 구성됩니다. 필드는 오브젝트의 이름 (16 캐릭터), 파일의 최종 갱신 시간 (12 캐릭터), 유저와 그룹 ID (각각 6 캐릭터), 파일 모드 (8 캐릭터), 거기에 파일 사이즈 (10 캐릭터)입니다. 모든 숫자 필드는 10 진수입니다만, 파일 모드만은 8 진수입니다.

갱신 시간은 파일의 st_mtime 필드입니다. 즉 기준 시점 (epoch)으로부터의 시간 CUT 초입니다. 유저 ID 와 그룹 ID 는 파일의 st_uid (와)과 st_gid 필드입니다. 파일 모드는 파일의 st_mode 필드입니다. 파일 사이즈는 파일의 st_size 필드입니다. 마지막 2 바이트는 캐릭터 라인 "`\n" 가 됩니다.

이름의 필드에 한정해 넘치는 것을 생각되기 (위해)때문에, 이하의 것 게대응하고 있습니다. 만약 파일명의 길이가 16 캐릭터를 넘을까 스페이스를 포함한 경우는, 이름의 필드에는 캐릭터 라인 "#1/" 에 이어 그 이름의 ASCII 에서의 길이가 기입해집니다. 파일 사이즈 (아카이브(archive) 헤더에 기입해지고 있는 것)에는 그 이름의 길이가 가산됩니다. 그리고 이름은 아카이브(archive) 헤더의 직후에 쓰여집니다.

이러한 필드에 있어 사용되어 있지 않은 부분에는 공백 캐릭터가 기입해집니다. 만약 필드에 그 최장의 캐릭터수가 기입해지고 있으면(자), 필드의 사이의 단락은 없게 됩니다.

아카이브(archive)중의 오브젝트는 항상 짝수 바이트의 길이됩니다. 파일의 길이가 홀수 바이트인 경우는 개행 (``\n'') 캐릭터로 패딩 됩니다. 그 경우, 헤더중의 파일 사이즈에는 패딩의 분은 반영되지 않습니다.

관련 항목
ar(1), stat(2)

역사
지금까지 적어도 4 개(살)의 ar 포맷이 있었습니다. 최초의 것은 선두의 ``매직''넘버 0177555 (int 형으로 쓰여져 있었다) 그리고 나타나고 있었습니다. 이러한 아카이브(archive)는 대부분이 16 비트 머신상에서 만들어진 것이어, 헤더는 5 개의 필드로부터 구성되어 있었습니다. 헤더의 필드에는 오브젝트명 (8 캐릭터), 파일의 최종 갱신 시간 (long 형), 유저 ID (char 형), 파일 모드 (char 형), 그리고 파일 사이즈 (부호 없음 int 형)가 있었습니다. 파일은 바이트수로 짝수장이 되도록(듯이) 패딩 되고 있었습니다.

2 번째의 것은 선두의 ``매직''넘버 0177545 (int 형으로 쓰여져 있었다) 그리고 나타나고 있었습니다. 이러한 아카이브(archive)는 16 혹은 32 비트 머신으로 만들어진 것이어, 헤더는 6 개의 필드로부터 구성되어 있었습니다. 필드에는 오브젝트명 (14 캐릭터), 파일의 최종 갱신 시간 (long 형), 유저 및 그룹 ID (각각 char 형), 파일 모드 (int 형), 그리고 파일 사이즈 (long 형)가 있었습니다. 파일은 바이트수로 짝수장이 되도록(듯이) 패딩 되고 있었습니다.

현재의 아카이브(archive) 포맷 (긴 이름과 스페이스를 포함한 이름을 서포트하고 있지 않는 걸)(은)는 4.0BSD 그리고 도입되었습니다. 헤더는 현재의 포맷과 같습니다만, 16 캐릭터 이상의 이름은 잘라 버릴 수 있어 스페이스를 포함한 이름 ( 및 이름의 말미에 스페이스가 도착하는 것) (은)는 서포트되고 있지 않습니다. 이러한 이유에 의해, 이 포맷에 전술의 확장이 이루어졌습니다. 현재의 이 포맷은 4.4BSD 그리고 최초로 출현했습니다.

호환성
현재 아카이브(archive) 포맷은 표준에서는 규정되고 있지 않습니다. AT&T UNIX 그럼, 옛부터 상술의 머지않아와도 다른 포맷의 아카이브(archive)로 배포되고 있습니다.