Go to the first, previous, next, last section, table of contents.


objcopy


objcopy [ -F bfdname | --target=bfdname ]
        [ -I bfdname | --input-target=bfdname ]
        [ -O bfdname | --output-target=bfdname ]
        [ -S | --strip-all ]  [ -g | --strip-debug ]
        [ -K symbolname | --keep-symbol=symbolname ]
        [ -N symbolname | --strip-symbol=symbolname ]
        [ -G symbolname | --keep-global-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 ]
        [ -j sectionname | --only-section=sectionname ]
        [ -R sectionname | --remove-section=sectionname ]
        [ -p | --preserve-dates ] [ --debugging ]
        [ --gap-fill=val ] [ --pad-to=address ]
        [ --set-start=val ] [ --adjust-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=ival ] [ --srec-forceS3 ]
        [ --redefine-sym old=new ] [ --weaken ]
        [ --keep-symbols=filename ]
        [ --strip-symbols=filename ]
        [ --keep-global-symbols=filename ]
        [ --localize-symbols=filename ]
        [ --weaken-symbols=filename ]
        [ -v | --verbose ] [ -V | --version ]  [ --help ]
        infile [outfile]

The GNU objcopy utility copies the contents of an object file to another. objcopy uses the GNU BFD Library to read and write the object files. It can write the destination object file in a format different from that of the source object file. The exact behavior of objcopy is controlled by command-line options. Note that objcopy should be able to copy a fully linked file between any two formats. However, copying a relocatable object file between any two formats may not work as expected.

objcopy creates temporary files to do its translations and deletes them afterward. objcopy uses BFD to do all its translation work; it has access to all the formats described in BFD and thus is able to recognize most formats without being told explicitly. See section `BFD' in Using LD.

GNU objcopy는 오브젝트 파일 내용을 다른 오브젝트 파일로 복사한다. objcopy은 오브젝트 파일을 읽고쓰기 위해 GNU BFD 라이브러리를 사용한다. 입력 오브젝트 파일과 다른 형식으로 출력 파일을 작성할 수 있다. 명령행 옵션으로 작업을 지시한다. 주의! objcopy는 완전히 링크된 파일을 다른 형식으로 복사할 수 있어야 하지만, 재배치가능한 오브젝트 파일의 경우 기대한대로 작동하지 않을 수 있다.

objcopy은 변환을 위해 임시 파일을 만들고 끝난 후 삭제한다. objcopy는 변환을 위해 BFD를 사용한다. 그래서 BFD에서 가능한 모든 형식을 사용할 수 있고, 명시적으로 지정하지 않아도 대부분의 형식을 인식할 수 있다. Using LD의 `BFD'를 참고하라.

objcopy can be used to generate S-records by using an output target of `srec' (e.g., use `-O srec').

objcopy can be used to generate a raw binary file by using an output target of `binary' (e.g., use `-O binary'). When objcopy generates a raw binary file, it will essentially produce a memory dump of the contents of the input object file. All symbols and relocation information will be discarded. The memory dump will start at the load address of the lowest section copied into the output file.
objcopy은 (`-O srec'과 같이) 출력 타겟으로 `srec'을 사용하여 S-record를 생성할 수 있다.

objcopy은 (`-O binary'와 같이) 출력 타겟으로 `binary'를 사용하여 형식화안된 이진 파일(raw binary file)을 만들 수 있다. 이 이진 파일은 입력 오브젝트 파일 내용의 메모리상 내용(memory dump)과 같다. 모든 심볼과 재배치 정보는 버려진다. 메모리상 내용은 출력 파일에 복사되는 가장 낮은 섹션의 로드 주소에서 시작한다.

When generating an S-record or a raw binary file, it may be helpful to use `-S' to remove sections containing debugging information. In some cases `-R' will be useful to remove sections which contain information that is not needed by the binary file.

Note - objcopy is not able to change the endianness of its input files. If the input format has an endianness, (some formats do not), objcopy can only copy the inputs into file formats that have the same endianness or which have no endianness (eg `srec').

S-record나 형식화안된 이진 파일을 생성할 때, `-S'로 디버깅 정보를 포한한 섹션을 없앨 수 있다. 어떤 경우 `-R'으로 이진 파일에서 필요하지 않은 정보를 포함한 섹션을 없애는 것이 유용할 수도 있다.

주의! objcopy는 입력 파일의 endian을 변경하지 못한다. 입력 파일이 endian을 가진다면 같은 endian을 가지거나 (`srec' 같이) endian이 없는 파일 형식으로만 복사할 수 있다.

infile
outfile
The input and output files, respectively. If you do not specify outfile, objcopy creates a temporary file and destructively renames the result with the name of infile.
입력 파일과 출력 파일. outfile를 지정하지 않으면 임시 파일을 만들고 결과의 이름을 (기존의 내용을 버리고) infile로 바꾼다.
-I bfdname
--input-target=bfdname
Consider the source file's object format to be bfdname, rather than attempting to deduce it. See section Target Selection, for more information.
입력 파일의 오브젝트 형식을 추측하지않고 명시적으로 bfdname으로 지정한다. Target Selection을 참고하라.
-O bfdname
--output-target=bfdname
Write the output file using the object format bfdname. See section Target Selection, for more information.
오브젝트 형식 bfdname으로 출력 파일을 작성한다. Target Selection를 참고하라.
-F bfdname
--target=bfdname
Use bfdname as the object format for both the input and the output file; i.e., simply transfer data from source to destination with no translation. See section Target Selection, for more information.
입력과 출력 파일 모두의 오브젝트 형식으로 bfdname을 사용한다. 그래서 번역없이 간단히 입력에서 출력으로 자료를 이동한다. Target Selection를 참고하라.
-j sectionname
--only-section=sectionname
Copy only the named section from the input file to the output file. This option may be given more than once. Note that using this option inappropriately may make the output file unusable.
지정한 섹션만 입력 파일에서 출력 파일로 복사한다. 이 옵션은 여러번 사용할 수 있다. 이 옵션을 잘못 사용하면 출력 파일을 사용못하게 만들 수도 있다.
-R sectionname
--remove-section=sectionname
Remove any section named sectionname from the output file. This option may be given more than once. Note that using this option inappropriately may make the output file unusable.
출력 파일에서 섹션 sectionname을 제거한다. 이 옵션은 여러번 사용할 수 있다. 이 옵션을 잘못 사용하면 출력 파일을 사용못하게 만들 수도 있다.
-S
--strip-all
Do not copy relocation and symbol information from the source file.
입력 파일에서 재배치 정보와 심볼 정보를 복사하지 않는다.
-g
--strip-debug
Do not copy debugging symbols from the source file.
입력 파일에서 디버깅 심볼을 복사하지 않는다.
--strip-unneeded
Strip all symbols that are not needed for relocation processing.
재배치 과정에 필요없는 모든 심볼을 제거한다.
-K symbolname
--keep-symbol=symbolname
Copy only symbol symbolname from the source file. This option may be given more than once.
소스 파일에서 심볼 symbolname만 복사한다. 이 옵션은 여러번 사용할 수 있다.
-N symbolname
--strip-symbol=symbolname
Do not copy symbol symbolname from the source file. This option may be given more than once.
소스 파일에서 심볼 symbolname을 복사하지 않는다. 이 옵션은 여러번 사용할 수 있다.
-G symbolname
--keep-global-symbol=symbolname
Keep only symbol symbolname global. Make all other symbols local to the file, so that they are not visible externally. This option may be given more than once.
심볼 symbolname만을 전역 심볼로 한다. 다른 심볼들은 외부에 보이지 않는 (파일에) 지역 심볼이 된다. 이 옵션은 여러번 사용할 수 있다.
-L symbolname
--localize-symbol=symbolname
Make symbol symbolname local to the file, so that it is not visible externally. This option may be given more than once.
심볼 symbolname을 파일에 지역 심볼로, 외부에서 볼 수 없게 한다. 이 옵션은 여러번 사용할 수 있다.
-W symbolname
--weaken-symbol=symbolname
Make symbol symbolname weak. This option may be given more than once.
심볼 symbolname을 약한 심볼로 만든다. 이 옵션은 여러번 사용할 수 있다.
-x
--discard-all
Do not copy non-global symbols from the source file.
전역 심볼이 아니면 입력 파일에서 복사하지 않는다.
-X
--discard-locals
Do not copy compiler-generated local symbols. (These usually start with `L' or `.'.)
컴파일러가 생성한 지역 심볼을 복사하지 않는다. (보통 `L'이나 `.'로 시작한다.)
-b byte
--byte=byte
Keep only every byteth byte of the input file (header data is not affected). byte can be in the range from 0 to interleave-1, where interleave is given by the `-i' or `--interleave' option, or the default of 4. This option is useful for creating files to program ROM. It is typically used with an srec output target.
입력 파일의 매 byte번째 바이트만을 유지한다. (헤더 자료에는 영향이 없다.) byte는 0에서 interleave-1 까지 가능하다. (interleave`-i'`--interleave'로 설정한다. 기본값은 4이다.) 이 옵션은 ROM을 프로그램하기 위한 파일을 만들 때 유용하다. 보통 srec 출력 타겟에서 사용한다.
-i interleave
--interleave=interleave
Only copy one out of every interleave bytes. Select which byte to copy with the -b or `--byte' option. The default is 4. objcopy ignores this option if you do not specify either `-b' or `--byte'.
interleave 바이트 단위로 복사한다. 어떤 바이트가 복사될지는 -b`--byte' 옵션으로 결정한다. 기본값은 4이다. -b`--byte' 옵션을 사용하지 않는다면 이 옵션을 무시한다.
-p
--preserve-dates
Set the access and modification dates of the output file to be the same as those of the input file.
출력 파일의 접근시간과 수정시간을 입력 파일과 같게 설정한다.
--debugging
Convert debugging information, if possible. This is not the default because only certain debugging formats are supported, and the conversion process can be time consuming.
가능하면 디버거 정보를 변환한다. 오직 몇몇 디버깅 형식만 지원되고 변환에 시간이 많이 들기 때문에, 기본적으로 변환하지 않는다.
--gap-fill val
Fill gaps between sections with val. This operation applies to the load address (LMA) of the sections. It is done by increasing the size of the section with the lower address, and filling in the extra space created with val.
val로 섹션 사이 공간을 채운다. 이는 섹션의 로드 주소 (LMA)에 적용된다. 과정은 낮은 주소를 가진 섹션의 크기를 키우고, 추가된 공간을 val로 채운다.
--pad-to address
Pad the output file up to the load address address. This is done by increasing the size of the last section. The extra space is filled in with the value specified by `--gap-fill' (default zero).
출력 파일을 로드 주소 address로 맞춘다. 이를 위해 마지막 섹션의 크기를 키운다. 추가된 공간은 `--gap-fill'로 지정된 값으로 (기본값은 0) 채운다.
--set-start val
Set the start address of the new file to val. Not all object file formats support setting the start address.
새로운 파일의 시작 주소를 val로 한다. 시작 주소를 설정할 수 없는 오브젝트 파일 형식도 있다.
--change-start incr
--adjust-start incr
Change the start address by adding incr. Not all object file formats support setting the start address.
시작 주소에 incr을 더한다. 시작 주소를 설정할 수 없는 오브젝트 파일 형식도 있다.
--change-addresses incr
--adjust-vma incr
Change the VMA and LMA addresses of all sections, as well as the start address, by adding incr. Some object file formats do not permit section addresses to be changed arbitrarily. Note that this does not relocate the sections; if the program expects sections to be loaded at a certain address, and this option is used to change the sections such that they are loaded at a different address, the program may fail.
시작 주소와 모든 섹션의 VMA과 LMA에 incr을 더한다. 섹션 주소를 자유롭게 수정할 수 없는 오브젝트 파일 형식도 있다. 이는 섹션을 재배치하지 않는다. 프로그램이 섹션을 어떤 주소에서 로드하길 바라는 경우, 이 옵션을 사용하여 섹션을 다른 주소에 로드하면 프로그램이 작동하지 않을 수 있다.
--change-section-address section{=,+,-}val
--adjust-section-vma section{=,+,-}val
Set or change both the VMA address and the LMA address of the named section. If `=' is used, the section address is set to val. Otherwise, val is added to or subtracted from the section address. See the comments under `--change-addresses', above. If section does not exist in the input file, a warning will be issued, unless `--no-change-warnings' is used.
섹션 section의 VMA와 LMA을 모두 설정하거나 변경한다. `='을 사용하면 val을 섹션 주소에 대입한다. 아닌 경우 val은 섹션 주소에 더해지거나 빼진다. 위의 `--change-addresses' 설명을 참고하라. `--no-change-warnings' 옵션이 사용되지 않았다면 입력 파일에 section이 없는 경우 경고가 발생한다.
--change-section-lma section{=,+,-}val
Set or change the LMA address of the named section. The LMA address is the address where the section will be loaded into memory at program load time. Normally this is the same as the VMA address, which is the address of the section at program run time, but on some systems, especially those where a program is held in ROM, the two can be different. If `=' is used, the section address is set to val. Otherwise, val is added to or subtracted from the section address. See the comments under `--change-addresses', above. If section does not exist in the input file, a warning will be issued, unless `--no-change-warnings' is used.
섹션 section의 LMA을 설정하거나 변경한다. LMA 주소는 프로그램 로드시 섹션이 로드될 주소이다. 보통 이는 실행중 프로그램에서 섹션의 주소인 VMA와 같다. 그러나 프로그램이 ROM에 저장된 경우와 같이, 몇몇 시스템에서는 서로 다르다. `='을 사용하면 val을 섹션 주소에 대입한다. 아닌 경우 val은 섹션 주소에 더해지거나 빼진다. 위의 `--change-addresses' 설명을 참고하라. `--no-change-warnings' 옵션이 사용되지 않았다면 입력 파일에 section이 없는 경우 경고가 발생한다.
--change-section-vma section{=,+,-}val
Set or change the VMA address of the named section. The VMA address is the address where the section will be located once the program has started executing. Normally this is the same as the LMA address, which is the address where the section will be loaded into memory, but on some systems, especially those where a program is held in ROM, the two can be different. If `=' is used, the section address is set to val. Otherwise, val is added to or subtracted from the section address. See the comments under `--change-addresses', above. If section does not exist in the input file, a warning will be issued, unless `--no-change-warnings' is used.
섹션 section의 VMA을 설정하거나 변경한다. VMA 주소는 프로그램이 시작된 후 섹션이 위치하는 주소이다. 보통 이는 섹션이 메모리에 로드될 주소인 LMA와 같다. 그러나 프로그램이 ROM에 저장된 경우와 같이, 몇몇 시스템에서는 서로 다르다. `='을 사용하면 val을 섹션 주소에 대입한다. 아닌 경우 val은 섹션 주소에 더해지거나 빼진다. 위의 `--change-addresses' 설명을 참고하라. `--no-change-warnings' 옵션이 사용되지 않았다면 입력 파일에 section이 없는 경우 경고가 발생한다.
--change-warnings
--adjust-warnings
If `--change-section-address' or `--change-section-lma' or `--change-section-vma' is used, and the named section does not exist, issue a warning. This is the default.
`--change-section-address'`--change-section-lma', `--change-section-vma' 옵션에서 지정한 섹션이 없다면 경고를 발생한다. 이는 기본 행동이다.
--no-change-warnings
--no-adjust-warnings
Do not issue a warning if `--change-section-address' or `--adjust-section-lma' or `--adjust-section-vma' is used, even if the named section does not exist.
`--change-section-address'`--change-section-lma', `--change-section-vma' 옵션에서 지정한 섹션이 없어도 경고를 발생하지 않는다.
--set-section-flags section=flags
Set the flags for the named section. The flags argument is a comma separated string of flag names. The recognized names are `alloc', `contents', `load', `noload', `readonly', `code', `data', `rom', `share', and `debug'. You can set the `contents' flag for a section which does not have contents, but it is not meaningful to clear the `contents' flag of a section which does have contents--just remove the section instead. Not all flags are meaningful for all object file formats.
지정한 섹션의 플래그를 설정한다. flags 아규먼트는 쉼표로 구분한 플래그 이름들이다. 가능한 이름은 `alloc', `contents', `load', `noload', `readonly', `code', `data', `rom', `share', `debug'이다. 내용이 없는 섹션에 `contents' 플래그를 설정할 수 있지만, 내용이 있는 섹션에서 `contents' 플래그를 끄는 것은 의미가 없다. (대신 섹션을 삭제하라.) 모든 플래그들이 모든 오브젝트 파일 형식에서 의미가 있는 것은 아니다.
--add-section sectionname=filename
Add a new section named sectionname while copying the file. The contents of the new section are taken from the file filename. The size of the section will be the size of the file. This option only works on file formats which can support sections with arbitrary names.
파일을 복사하면서 새로운 섹션 sectionname을 추가한다. 새로운 섹션의 내용은 파일 filename에서 얻는다. 섹션의 크기는 파일의 크기이다. 이 옵션은 섹션이 임의의 이름을 가질 수 있는 파일 형식에서만 작동한다.
--change-leading-char
Some object file formats use special characters at the start of symbols. The most common such character is underscore, which compilers often add before every symbol. This option tells objcopy to change the leading character of every symbol when it converts between object file formats. If the object file formats use the same leading character, this option has no effect. Otherwise, it will add a character, or remove a character, or change a character, as appropriate.
어떤 오브젝트 파일 형식은 심볼 앞에 특별한 문자를 사용한다. 가장 흔히 사용되는 문자는 컴파일러가 종종 각 심볼 전에 추가하는 `_'이다. 이 옵션은 오브젝트 파일 형식 간에 변환할 때 각 심볼의 시작 문자를 변경한다. 오브젝트 파일 형식이 같은 시작 문자를 사용한다면 아무 영향이 없다. 그렇지 않으면 적당히 문자를 추가, 제거, 변경한다.
--remove-leading-char
If the first character of a global symbol is a special symbol leading character used by the object file format, remove the character. The most common symbol leading character is underscore. This option will remove a leading underscore from all global symbols. This can be useful if you want to link together objects of different file formats with different conventions for symbol names. This is different from --change-leading-char because it always changes the symbol name when appropriate, regardless of the object file format of the output file.
전역 심볼의 첫 문자가 오브젝트 파일 형식에서 사용하는 특별한 심볼 시작 문자이면 그 문자를 제거한다. 가장 흔희 사용되는 문자는 `_'이다. 이 옵션은 심볼 이름에 다른 규칙을 사용하는 파일 형식들로 쓰여진 객체를 링크할 때 유용하다. 이 옵션은 출력 파일의 오브젝트 파일 형식과 관계없이 심볼 이름을 항상 변경하는 --change-leading-char과 다르다.
--srec-len=ival
Meaningful only for srec output. Set the maximum length of the Srecords being produced to ival. This length covers both address, data and crc fields.
srec 출력에만 의미가 있다. Srecord의 최대 길이를 ival로 한다. 이 길이는 주소, 자료, crc 필드를 모두 포함한다.
--srec-forceS3
Meaningful only for srec output. Avoid generation of S1/S2 records, creating S3-only record format.
srec 출력에만 의미가 있다. S1/S2 레코드를 생성하지 않고, S3 레코드만을 생성한다.
--redefine-sym old=new
Change the name of a symbol old, to new. This can be useful when one is trying link two things together for which you have no source, and there are name collisions.
심볼 이름을 old에서 new로 변경한다. 이 옵션은 소스가 없는 객체를 링크시 이름이 충돌하는 경우 유용하다.
--weaken
Change all global symbols in the file to be weak. This can be useful when building an object which will be linked against other objects using the -R option to the linker. This option is only effective when using an object file format which supports weak symbols.
파일의 모든 전역 심볼을 약한 심볼로 변경한다. 이 옵션은 -R 옵션을 사용하여 링크할 객체를 생성할 때 유용하다. 이 옵션은 오브젝트 파일 형식이 약한 심볼을 지원하는 경우에만 유효하다.
--keep-symbols=filename
Apply `--keep-symbol' option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once.
파일 filename의 각 심볼에 `--keep-symbol' 옵션을 적용한다. filename은 단순히 한 줄에 한 심볼 이름을 저장한 파일이다. 주석은 `#'로 시작한다. 이 옵션은 여러번 사용할 수 있다.
--strip-symbols=filename
Apply `--strip-symbol' option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once.
파일 filename의 각 심볼에 `--strip-symbol' 옵션을 적용한다. filename은 단순히 한 줄에 한 심볼 이름을 저장한 파일이다. 주석은 `#'로 시작한다. 이 옵션은 여러번 사용할 수 있다.
--keep-global-symbols=filename
Apply `--keep-global-symbol' option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once.
파일 filename의 각 심볼에 `--keep-global-symbol' 옵션을 적용한다. filename은 단순히 한 줄에 한 심볼 이름을 저장한 파일이다. 주석은 `#'로 시작한다. 이 옵션은 여러번 사용할 수 있다.
--localize-symbols=filename
Apply `--localize-symbol' option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once.
파일 filename의 각 심볼에 `--localize-symbol' 옵션을 적용한다. filename은 단순히 한 줄에 한 심볼 이름을 저장한 파일이다. 주석은 `#'로 시작한다. 이 옵션은 여러번 사용할 수 있다.
--weaken-symbols=filename
Apply `--weaken-symbol' option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once.
파일 filename의 각 심볼에 `--weaken-symbol' 옵션을 적용한다. filename은 단순히 한 줄에 한 심볼 이름을 저장한 파일이다. 주석은 `#'로 시작한다. 이 옵션은 여러번 사용할 수 있다.
-V
--version
Show the version number of objcopy.
objcopy의 버전을 출력한다.
-v
--verbose
Verbose output: list all object files modified. In the case of archives, `objcopy -V' lists all members of the archive.
자세한 출력: 변경한 모든 오브젝트 파일을 출력한다. 아카이브의 경우 `objcopy -V'는 모든 멤버를 출력한다.
--help
Show a summary of the options to objcopy.
objcopy의 옵션들을 간단히 설명한다.


Go to the first, previous, next, last section, table of contents.