objcopy -
オブジェクトファイルのコピーや変換を行う
- objcopy
- [-F bfdname | --target=bfdname]
[-I bfdname | --input-target=bfdname]
[-O bfdname | --output-target=bfdname]
[-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] [--adjust-start=incr]
[--adjust-vma= incr]
[--adjust-section-vma=section{=,+,-}val]
[--adjust-warnings] [--no-adjust-warnings]
[--set-section-flags= section=flags]
[--add-section=sectionname=filename]
[--change-leading-char] [--remove-leading-char]
[--weaken] [-v | --verbose]
[-V | --version] [--help] infile
[outfile]
GNU
objcopy
ユーティリティはオブジェクトファイルの内容を別ファイルにコピーする。
objcopy
はオブジェクトファイルの読み書きに
GNU BFD
ライブラリを用いる。これに
よって書き込み先のファイルのオブジェクトフォーマットを読み込みファイル
のフォーマットから変更することができる。
objcopy
の詳細な動作はコマンドラインオプションによって決定される。
objcopy
は変換を行う際に一時ファイルを作成し、動作後にこれを消去する。
objcopy
変換作業はすべて BFD
によって行われる。したがって
BFD が種々のフォー
マットに関して持っているすべての情報を利用することができ、明示しないで
もほとんどのフォーマットを認識できる。
objcopy はターゲットを
srec に指定する (つまり
-O srec とする)
ことによって S-record
を生成することもできる。
objcopy
は出力ターゲットを
binary に指定する
(つまり
-O binary とする)
ことによって raw
バイナリファイルを生成することもできる。この
際には、基本的には入力オブジェクトファイルの内容のメモリダンプが作られ
る。メモリダンプは出力ファイルにコピーされる最抵位のセクションの仮想ア
ドレスからスタートする。
S-record や raw
バイナリファイルを生成する場合に
-S
を用いれば、デバッグ情報を持つセクションを削除できる。また、バイナリファ
イルに不要な情報を持ったセクションを消去するのに
-R
が役に立つ場合もある。
infile と
outfile
はそれぞれ入力・出力ファイルである。
outfile
が指定されないと
objcopy
は一時ファイルを作成し、その結果を入力ファイルの名前にリネームする
(す
なわちもとの入力ファイルは破壊される)。
- -I bfdname,
--input-target=bfdname
- 入力ファイルのオブジェクトフォーマットを
bfdname
として取り扱う。通常は自動的に認識する。
- -O bfdname,
--output-target=bfdname
- 出力ファイルのオブジェクトフォーマットを
bfdname にする。
- -F bfdname,
--target=bfdname
- 入出力ファイルのオブジェクトフォーマットに
bfdname
を用いる。すなわち入力ファイルを変換せずに単に出力ファイルにコピーする。
- -R sectionname,
--remove-section=sectionname
- 指定したセクションをファイルから削除する。このオプションは複数回指定す
ることができる。このオプションを誤って用いると、出力ファイルが役立たず
になる可能性がある。
- -S, --strip-all
- リロケーション情報とシンボル情報を入力ファイルからコピーしない。
- -g, --strip-debug
- デバッグシンボルを入力ファイルからコピーしない。
- --strip-unneeded
- リロケーション処理に不要なシンボルをすべて取り去る。
- -K symbolname,
--keep-symbol=symbolname
- 入力ファイルから
symbolname
という名前のシンボルだけをコピーする。
複数回指定できる。
- -N symbolname,
--strip-symbol=symbolname
- 入力ファイルの
symbolname
という名前のシンボルをコピーしない。
複数回指定できる。
- -L symbolname,
--localize-symbol=symbolname
-
symbolname
をそのファイルにローカルなものにし、外部から見えないようにする。
複数回指定できる。
- -W symbolname,
--weaken-symbol=symbolname
-
symbolname を weak
にする。
複数回指定できる。
- -x, --discard-all
- 入力ファイルのグローバルでないシンボルはコピーしない。
- -X, --discard-locals
- コンパイラが生成したローカルなシンボル
(通常 "L" または "."
ではじまるシンボル)
はコピーしない。
- -b byte, --byte=byte
- 入力ファイルを
interleave
づつ区切った各セクションから
byte バイ
ト目だけをコピーする
(ヘッダデータは影響されない)。
byte の範囲は 0 から
interleave-1 までである。
interleave の値は
-i(または--interleave)
オプションで指定する。
このオプションは ROM
プログラム用のファイルを作成するときに便利である。出
力ターゲット srec
と共に用いられることが多い。
- -i interleave,
--interleave=interleave
-
interleave
バイトにつき 1
バイトづつをコピーする。デフォルトは
4
である。何番目のバイトをコピーするかは
-b(または--byte )
オプションで指定する。
-b も --bytes
も指定されなかっ
た場合は interleave
は無視される。
- -p, --preserve-dates
- 出力ファイルのアクセス時刻と修正時刻を入力ファイルと同じにする。
- --debugging
- 可能ならばデバッグ情報を変換する。このオプションはデフォルトにはなって
いない。すべてのデバッグフォーマットがサポートされているわけではないし、
この変換には時間がかかるからである。
- --gap-fill=val
- セクション間のギャップを
val
で埋める。この動作は
セクションの load address (LMA)
に適用される。これはセクションのサイズを抵位アドレスの分増やし、
その余分を val
で埋めることでなされる。
- --pad-to=address
- 出力ファイルをロードアドレス
address
まで水増しする。
これは最後のセクションのサイズを増やすことでなされる。
余分なスペースは
--gap-fill
で指定された値で埋められる
(デフォルトは 0)。
- --set-start=val
- 新しいファイルのスタートアドレスを
val
に設定する。すべてのオブ
ジェクトファイルフォーマットでこの指定が可能ではないことに注意すること。
- --adjust-start=incr
- スタートアドレスを
incr
だけ増やす。すべてのオブジェクトファイル
フォーマットでこの指定が可能ではないことに注意すること。
- --adjust-vma=incr
- すべてのセクション
(スタートアドレスも含まれる)
のアドレスを incr
だけ増やす。すべてのオブジェクトファイルフォーマットで任意
のアドレス設定が指定が可能なわけではないことに注意すること。またこのオ
プションではそれぞれのセクションがロードされるアドレスを変えてしまうの
で、プログラムが動かなくなる可能性がある
- --adjust-section-vma=section{=,+,-}val
- 名前が section
のセクションのアドレスを設定する。
= が用い
られた場合はセクションのアドレスは
val
にされる。それ以外の場合
はセクションのアドレスから
val
が増減される。上記の
--adjust-vma
に関するコメントを参照のこと。
section が
入力ファイルに存在しない場合は警告グメッセージが表示される
(ただし --no-adjust-warning
が指定されていたら表示しない)。
- --adjust-warnings
-
--adjust-section-vma
が指定されているとき、
対象となるセクションが存在しなければ警告メッセージを表示する。
デフォルトの動作である。
- --no-adjust-warnings
-
--adjust-section-vma
が指定されているとき、かつ対象となるセ
クションが存在していなくても警告メッセージを表示しない。
- --set-section-flags=section=flags
- 指定したセクションのフラグを設定する。引数
flags はコンマ (,) で
区切られたフラグ文字列である。認識される文字列は
alloc、 load、 readonly、
code、 data、 rom であ
る。すべてのフラグがあらゆるフォーマットで有効なわけではないことに注意
すること。
- --add-section=sectionname=filename
- ファイルをコピーするときに
sectionname
という名前のセクションを
追加する。この新しいセクションの内容はファイル
filename から取ら
れる。このオプションが機能するのは、任意のセクション名をサポートしてい
るフォーマットだけである。
- --change-leading-char
- オブジェクトファイルのフォーマットによっては、シンボル名の先頭に特定の
文字を使っている場合がある。よくある例はアンダースコア
(_) で、これは
コンパイラがすべてのシンボル名に前置する。このオプションを指定すると
objcopy
はフォーマット変換の際にすべてのシンボルにおける先頭文字を変更しようと
する。同じ先頭文字を持つオブジェクト間では、このオプションは意味を持た
ない。異なる場合は、場合に応じて先頭文字が追加されたり削除、変更された
りする。
- --remove-leading-char
- グローバルシンボルの先頭文字がオブジェクトファイルに特有のものであった
場合、これを削除する。通常はアンダースコア
(_)
がこれにあたる。このオ
プションはすべてのグローバルシンボルから先頭にあるアンダースコアを削除
する。これは
(シンボル名の命名流儀が異なる)
複数のフォーマットに属する
オブジェクト群を同時にリンクする場合に有用である。このオプションは
--change-leading-char
とは異なる。後者では出力のフォーマット
にかかわらず、該当したケースではすべて変更が行われる。
- --weaken
- ファイルのすべての
global なシンボルを weak
に変更する。
- -v, --verbose
- 詳細出力モード。修正されたすべてのオブジェクトファイルをリストする。書
庫の場合は" objcopy -V"
とすると書庫のすべてのメンバーを表示する。
- -V, --version
-
objcopy
のバージョン番号を表示して終了する。
- --help
-
objcopy
のオプションの要約を表示して終了する。
info の `
binutils '
エントリ、
The GNU Binary Utilities,
Roland H. Pesch (June 1993)、
Copyright (c) 1993, 94, 95, 96, 1997 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this manual
provided the copyright notice and this permission notice are preserved on all
copies.
Permission is granted to copy and distribute modified versions of this manual
under the conditions for verbatim copying, provided that the entire resulting
derived work is distributed under the terms of a permission notice identical
to this one.
Permission is granted to copy and distribute translations of this manual into
another language, under the above conditions for modified versions, except
that this permission notice may be included in translations approved by the
Free Software Foundation instead of in the original English.