objcopy(1)

명칭
objcopy - 오브젝트 파일의 카피와 변환

서식

objcopy
    [-F bfdname | --target=bfdname] [-I bfdname | --input-target=bfdname] [-O bfdname | --output-target=bfdname] [-j sectionname | --only-section=sectionname] [-R sectionname | --remove-section=sectionname] [-S | --strip-all] [-g | --strip-debug] [--strip-unneeded] [-K symbolname | --keep-symbol=symbolname] [-N symbolname | --strip-symbol=symbolname] [-L symbolname | --localize-symbol=symbolname] [-W symbolname | --weaken-symbol=symbolname] [-x | --discard-all] [-X | --discard-locals] [-b byte | --byte=byte] [-i interleave | --interleave=interleave] [-p | --preserve-dates] [--debugging] [--gap-fill=val] [--pad-to=address] [--set-start=val] [--change-start=incr] [--change-addresses=incr] [--change-section-address section{=,+,-}val] [--change-section-lma section{=,+,-}val] [--change-section-vma section{=,+,-}val] [--change-warnings] [--no-change-warnings] [--set-section-flags section=flags] [--add-section sectionname=filename] [--change-leading-char] [--remove-leading-char] [--srec-len=val] [--srec-forceS3] [--redefine-sym old=new] [--weaken] [-v | --verbose] [-V | --version] [--help] infile [outfile]

해설
GNU objcopy 유틸리티는 있는 오브젝트 파일의 내용을 외에 카피합니다. objcopy (은)는 오브젝트 파일의 읽고 쓰기에 GNU BFD 프로그램 라이브러리를 사용합니다. 원래의 오브젝트 파일과 다른 포맷으로 카피처의 오브젝트 파일에 기입하는 것이 가능합니다. objcopy 의 엄밀한 거동은 명령행의 인수로 제어합니다.

objcopy (은)는 변환을 위해서(때문에) 일시파일을 작성해 다음에 그것들을 삭제합니다. objcopy (은)는 모든 변환 작업으로 BFD 를 사용합니다; 즉 BFD 가 알고 있다 포맷은 모두 알고 있는 일이 되므로, 명시적으로 지정하지 않아도 대부분의 포맷을 인식할 수가 있습니다.

objcopy 그리고 출력 먼저 srec (을)를 지정한다 (예를 들면 -O srec (을)를 사용한다) 일로 S레코드를 생성할 수 있습니다.

objcopy 그리고 출력 먼저 binary (을)를 지정한다 (예를 들면 -O binary (을)를 사용한다) 일로 생의 바이노리필드를 생성할 수 있습니다. objcopy 그리고 생의 바이노리필드를 생성하는 것은, 본질적으로는 입력의 오브젝트 파일의 내용의 memery dump를 생성하는 것에 되겠지요. 심볼과 재배치 정보는 모두 버리고 가집니다. memery dump는 출력 파일에 카피되는 가운데 가장 저위의 섹션의 가상 주소로부터 시작됩니다.

S레코드나 생의 바이노리필드를 생성하는 경우는, -S (을)를 사용해 디버그 정보를 포함한 섹션을 삭제하는 것이 좋을지도 모릅니다. 경우에 따라서는 -R 하지만, 바이노리필드에 필요 없는 정보를 포함한 섹션을 삭제하는데 유용하겠지요.

infile (와)과 outfile (은)는 각각 입력과 출력 파일입니다. outfile (을)를 지정하지 않으면 objcopy (은)는 일시파일을 작성하고 나서 그 파일명을 입력 파일명에 붙이고 바꾸어 끝냅니다.

옵션

-I bfdname, --input-target=bfdname
    입력 파일의 오브젝트 형식을 추측하려고 하는 대신에 bfdname 이다고 하여 취급합니다.

-O bfdname, --output-target=bfdname
    오브젝트 형식으로서 bfdname (을)를 사용해 출력 파일에 기입합니다.

-F bfdname, --target=bfdname
    입출력 양쪽 모두의 오브젝트 형식이 bfdname 이다고 합니다; 즉, 입력으로부터 출력에 무변환으로 데이터를 단순하게 전송 한다고 하는 것입니다.

-j sectionname, --only-section=sectionname
    지정한 섹션만 입력 파일로부터 출력 파일에 카피해, 다른 모든 섹션을 버립니다. 이 옵션은 2 회 이상 지정할 수 있습니다. 이 옵션을 부적절하게 사용하면(자) 출력 파일이 이용할 수 없는 쓸모 있게 되므로 주의해 주세요.

-R sectionname, --remove-section=sectionname
    지정된 섹션을 파일로부터 없앱니다. 이 옵션은 2 회 이상 지정할 수 있습니다. 이 옵션을 부적절하게 사용하면(자) 출력 파일이 이용할 수 없는 쓸모 있게 되므로 주의해 주세요.

-S, --strip-all
    재배치와 심볼의 정보를 입력 파일로부터 카피하지 않습니다.

-g, --strip-debug
    디버그 심볼을 입력 파일로부터 카피하지 않습니다.

--strip-unneeded
    재배치 처리에 불필요한 심볼을 모두 없앱니다.

-K symbolname, --keep-symbol=symbolname
    입력 파일로부터 심볼 symbolname 만을 카피합니다. 이 옵션은 2 회 이상 지정할 수 있습니다.

-N symbolname, --strip-symbol=symbolname
    입력 파일로부터 심볼 symbolname 를 카피하지 않습니다. 이 옵션은 2 회 이상 지정할 수 있습니다.

-L symbolname, --localize-symbol=symbolname
    심볼 symbolname 를, 외부로부터 참조할 수 없게 파일내 로컬로 합니다. 이 옵션은 2 회 이상 지정할 수 있습니다.

-W symbolname, --weaken-symbol=symbolname
    심볼 symbolname 를 weak 로 합니다. 이 옵션은 2 회 이상 지정할 수 있습니다.

-x, --discard-all
    입력 파일로부터 글로벌이 아닌 심볼을 카피하지 않습니다.

-X, --discard-locals
    컴파일러가 생성한 로컬 심볼을 카피하지 않습니다. (그것들은 통상 "L" 인가 ". " 그리고 시작됩니다. )

-b byte, --byte=byte
    입력 파일의 각 byte 차례째의 바이트만을 꺼냅니다 (헤더 데이터에는 영향을 주지 않습니다). byte 에는 0 으로부터 interleave-1 의 범위의 값을 지정할 수 있습니다. 이 옵션은 ROM 에 기입하기 위한 파일을 작성하기 위해서 유용합니다. 전형적으로는 srec 의 출력 지정과 함께 사용합니다.

-i interleave, --interleave=interleave
    각 interleave바이트마다 1바이트만을 카피합니다. 어떤 것을 카피할까는 -b 나 --byte 옵션으로 선택합니다. 디폴트는 4입니다. interleave 는 -b 나 --byte 의 어느쪽이나 지정되어 있지 않다 경우는 무시됩니다.

-p, --preserve-dates
    출력 파일의 액세스 시각과 갱신 시각을 입력 파일에 맞춥니다.

--debugging
    가능하면 디버그 정보를 변환합니다. 특정의 디버그 정보 밖에 서포트하고 있지 않고, 변환 처리는 시간을 필요로 할 가능성이 있으므로, 이것은 디폴트가 아닙니다.

--gap-fill=val
    섹션간의 틈을 val 로 묻습니다. 이 조작은 섹션의 load address (LMA)에 적용됩니다. 저위 주소의 섹션의 사이즈를 늘려, 할 수 있던 여분의 공간을 val 로 묻는 일로 실현되고 있습니다.

--pad-to=address
    로드 주소 address 까지 출력 파일에 충전물을 합니다. 이것은 마지막 섹션의 사이즈를 늘리는 일로 행해집니다. 할 수 있던 여분의 공간은 --gap-fill 로 지정된 값 (디폴트는 0)으로 묻을 수 있습니다.

--set-start=val
    새로운 파일의 개시 주소를 val 로 설정합니다. 모든 오브젝트 파일 형식이 개시 주소의 설정을 서포트하고 있다 (뜻)이유가 아닙니다.

--change-start=incr, --adjust-start=incr
    개시 주소를, incr 를 가산하는 일로 변경합니다. 모든 오브젝트 파일 형식이 개시 주소의 설정을 서포트하고 있다 (뜻)이유가 아닙니다.

--adjust-vma=incr
    개시 주소 및 모든 섹션의 주소를, incr 를 가산하는 일로 변경합니다. 몇개의 오브젝트 파일 형식에서는 섹션의 주소를 임의의 값으로 변경하는 일은 용서되고 있지 않습니다. 이것은 섹션을 재배치하는 것은 아닌 것에 주의해 주세요; 만약 프로그램이 섹션이 특정의 주소에 로드 되는 일을 기대하고 있어, 그리고 이 옵션이 섹션을 다른 주소에 로드하도록(듯이) 사용되었을 경우는, 프로그램은 정상적으로 동작하지 않을지도 모릅니다.

--change-section-address section{=,+,-}val, --adjust-section-vma section{=,+,-}val
    지정된 section 의 VMA 및 LMA 주소를, 설정 또는 변경합니다. = 가 지정되었을 경우는, 섹션의 주소는 val 로 설정됩니다. 그렇지 않으면 val 가 섹션의 주소에 가산 또는 감산됩니다. 위의 --adjust-vma 에 쓰여져 있는 코멘트도 참조해 주세요. 입력 파일에 section 가 존재하지 않는 경우는, --no-adjust-warnings 가 지정되어 있지 않으면 경고가 출력됩니다.

--change-section-lma section{=,+,-}val
    지정된 section 의 LMA 주소를, 설정 또는 변경합니다. = 가 지정되었을 경우는, 섹션의 주소는 val 로 설정됩니다. 그렇지 않으면 val 가 섹션의 주소에 가산 또는 감산됩니다. 위의 --adjust-addresses 에 쓰여져 있는 코멘트도 참조해 주세요. 입력 파일에 section 가 존재하지 않는 경우는, --no-change-warnings 가 지정되어 있지 않으면 경고가 출력됩니다. --change-section-vma section{=,+,-}val 지정된 section 의 VMA 주소를, 설정 또는 변경합니다. = 가 지정되었을 경우는, 섹션의 주소는 val 로 설정됩니다. 그렇지 않으면 val 가 섹션의 주소에 가산 또는 감산됩니다. 위의 --adjust-addresses 에 쓰여져 있는 코멘트도 참조해 주세요. 입력 파일에 section 가 존재하지 않는 경우는, --no-change-warnings 가 지정되어 있지 않으면 경고가 출력됩니다.

--change-warnings, --adjust-warnings
    --adjust-section-XXX 가 지정되어 지정된 섹션이 존재하지 않는다고 경고가 출력됩니다. 이것은 디폴트입니다.

--no-change-warnings, --no-adjust-warnings
    --adjust-section-XXX 가 지정되어, 지정되었다 섹션이 존재하지 않아도 경고를 출력하지 않습니다.

--set-section-flags section=flags
    지정된 섹션의 플래그를 설정합니다. 인수 flags 는 플래그명을 콤마로 단락지은 캐릭터 라인입니다. 인식하는 플래그명은 alloc, contents, load, noload, readonly, code, data, rom, share, debug 입니다. 모든 플래그가 모든 오브젝트 파일 형식에서 의미를 가진다고는 할 수 없습니다.

--add-section sectionname=filename
    sectionname 로 지정된 이름의 새로운 섹션을 파일의 카피중에 덧붙입니다. 새로운 섹션의 내용은 파일 filename 로부터 받아들여집니다. 섹션의 사이즈는 파일의 사이즈가 됩니다. 이 옵션은 임의의 이름을 가지는 섹션을 서포트할 수 있는 파일 형식에서만 기능합니다.

--change-leading-char
    몇개의 오브젝트 파일 형식에서 심볼의 최초로 특수 캐릭터가 사용되고 있습니다. 무엇보다 일반적인 것은 언더스코어로, 자주 컴파일러가 각 심볼의 전에 덧붙입니다. 이 옵션은 objcopy 에, 오브젝트 파일 형식을 변환할 때에 각 심볼의 시작의 캐릭터를 변경하도록 지시합니다. 변환 전후의 오브젝트 파일 형식이 심볼의 시작에 같은 캐릭터를 사용하고 있는 경우는, 이 옵션은 아무것도 하지 않습니다. 그렇지 않으면, 이 옵션으로 캐릭터를 덧붙인다, 또는 캐릭터를 삭제한다, 또는 캐릭터를 변경하는 것이, 적절히 행해집니다.

--remove-leading-char
    글로벌 심볼의 최초의 캐릭터가, 오브젝트 파일 형식에서 사용된다 심볼의 최초로 부가되는 특수 캐릭터였던 경우는, 그 캐릭터를 없앱니다. 심볼에 전치 되는 가장 일반적인 캐릭터는 언더스코어입니다. 이 옵션은 전치 되고 있는 언더스코어를 모든 글로벌 심볼로부터 없앱니다. 이것은 심볼명의 결정이 다른 파일 형식의 파일을 함께 링크 하고 싶은 경우에 유용합니다. 이것은 --change-leading-char 와는 다릅니다. 왜냐하면 이 옵션에서는 적절하면, 출력의 오브젝트 파일 형식과는 관계없이 항상 심볼명을 변경해 버리기 때문입니다.

--srec-len=val
    srec 출력에서만 의미가 있습니다. S 레코드의 길이를 val 로 설정합니다. 이 길이에는, 주소, 데이터, CRC 필드도 포함됩니다.

--srec-forceS3
    srec 출력에서만 의미가 있습니다. S1/S2 레코드의 생성을 막아, S3 레코드만의 서식으로 합니다.

--redefine-sym old=new
    심볼의 이름을 old 로부터 new 에 변경합니다. 소스가 없는 2 개의 것 링크 하려고 하고 있어, 이름의 충돌이 있을 때 유용하겠지요.

--weaken
    파일의 모든 글로벌 심볼을 weak 로 변경합니다.

-v, --verbose
    출력을 장황하게 하는: 변경된 모든 오브젝트 파일을 리스트 합니다. 아카이브(archive)의 경우는 "objcopy -V" 로 어카이브(archive)의 멤버가 모두 리스트 됩니다.

-V, --version
    objcopy 의 버젼 번호를 표시해 종료합니다.

--help
    objcopy 의 옵션의 요약을 표시해 종료합니다.

관련 항목
info의 `binutils' 의 항; The GNU Binary Utilities, Roland H. Pesch (June 1993)

COPYING
This document is distributed under the terms of the GNU Free Documentation License, version 1.1. That license is described in the sources for this manual page, but it is not displayed here in order to make this manual more consise. Copies of this license can also be obtained from: http://www.gnu.org/copyleft/.

일본어 번역
노쿠비관고(hnokubi@yyy.or.jp): FreeBSD 용으로 번역