Go to the first, previous, next, last section, table of contents.
objcopy [@option{-F} bfdname|@option{--target=}bfdname]
[@option{-I} bfdname|@option{--input-target=}bfdname]
[@option{-O} bfdname|@option{--output-target=}bfdname]
[@option{-B} bfdarch|@option{--binary-architecture=}bfdarch]
[@option{-S}|@option{--strip-all}] [@option{-g}|@option{--strip-debug}]
[@option{-K} symbolname|@option{--keep-symbol=}symbolname]
[@option{-N} symbolname|@option{--strip-symbol=}symbolname]
[@option{-G} symbolname|@option{--keep-global-symbol=}symbolname]
[@option{-L} symbolname|@option{--localize-symbol=}symbolname]
[@option{-W} symbolname|@option{--weaken-symbol=}symbolname]
[@option{-x}|@option{--discard-all}] [@option{-X}|@option{--discard-locals}]
[@option{-b} byte|@option{--byte=}byte]
[@option{-i} interleave|@option{--interleave=}interleave]
[@option{-j} sectionname|@option{--only-section=}sectionname]
[@option{-R} sectionname|@option{--remove-section=}sectionname]
[@option{-p}|@option{--preserve-dates}]
[@option{--debugging}]
[@option{--gap-fill=}val] [@option{--pad-to=}address]
[@option{--set-start=}val] [@option{--adjust-start=}incr]
[@option{--change-addresses=}incr]
[@option{--change-section-address} section{=,+,-}val]
[@option{--change-section-lma} section{=,+,-}val]
[@option{--change-section-vma} section{=,+,-}val]
[@option{--change-warnings}] [@option{--no-change-warnings}]
[@option{--set-section-flags} section=flags]
[@option{--add-section} sectionname=filename]
[@option{--rename-section} oldname=newname[,flags]]
[@option{--change-leading-char} ] [@option{--remove-leading-char}]
[@option{--srec-len=}ival ] [@option{--srec-forceS3}]
[@option{--redefine-sym} old=new ]
[@option{--weaken}]
[@option{--keep-symbols=}filename]
[@option{--strip-symbols=}filename]
[@option{--keep-global-symbols=}filename]
[@option{--localize-symbols=}filename]
[@option{--weaken-symbols=}filename]
[@option{--alt-machine-code=index}]
[@option{-v}|@option{--verbose}]
[@option{-V}|@option{--version}]
[@option{--help}]
infile [outfile]
GNU @command{objcopy}ユーティリティは,オブジェクトファイルの内容を
別のファイルにコピーします.@command{objcopy}はオブジェクトファイルの読
み書きにGNU BFDを使用します.コピー先のオブジェクトファイルに,
コピー元のオブジェクトファイルとは異なるフォーマットで書き出すことが可能
です.@command{objcopy}の正確な動作は,コマンドラインオプションで制御さ
れます.@command{objcopy}は,完全にリンクされているファイルを,二つの書
式間でコピー可能であるべきだということに注意してください.しかし,再配置
可能なオブジェクトファイルを二つのフォーマットの間でコピーすることは,期
待したようには動作しません.
@command{objcopy}は,その変換を行うために一時ファイルを作成し,その後で
それを削除します.@command{objcopy}は,そのすべての変換作業でBFDを
使用します.それは,BFDで記述されているすべてのフォーマットにアクセ
スするので,明示的に伝えること無く,ほとんどのフォーマットを認識すること
が可能です.See section `BFD' in Using LD.
@command{objcopy}は,`srec'出力ターゲットを使用することで,S-record
を生成するために使用可能です(例えば,@option{-O srec}を使用してください).
@command{objcopy}は,`binary'の出力ターゲットを使用することで,生の
バイナリファイルを生成するために使用可能です(例えば,@option{-O binary}
を使用してください).@command{objcopy}が生のバイナリファイルを生成すると
き,それは本質的に,入力オブジェクトファイルの内容のメモリダンプを生成し
ます.すべてのシンボルと再配置の情報は削除されます.メモリダンプは,出力
ファイルにコピーされる最抵位のセクションのロードアドレスから開始します.
S-recordや生のバイナリファイルを生成するとき,デバッグ情報を含むセクショ
ンを削除するため,@option{-S}を使用すると便利かもしれません.場合によっ
ては,バイナリファイルに必要のない情報を含むセクションを削除するため,
@option{-R}が役に立つでしょう.
注意 - @command{objcopy}は,入力ファイルのエンディアンを変更することがで
きません.入力フォーマットにエンディアンがある場合,(持たないフォーマッ
トもあります),@command{objcopy}は,入力ファイルを同じエンディアンを持つ,
またはエンディアンを持たないフォーマットのファイル(例えば`srec')に
のみコピー可能です.
- @env{infile}
-
- @env{outfile}
-
それぞれ入力と出力のファイルです.outfileを指定しない場合,
@command{objcopy}は結果的に破壊される一時ファイルを作成し,infile
に名前を変更します.
- @env{-I bfdname}
-
- @env{--input-target=bfdname}
-
ソースファイルのオブジェクトのフォーマットを,それを導き出すのではなく,
bfdnameと考えます.詳細は,See section ターゲットの選択.
- @env{-O bfdname}
-
- @env{--output-target=bfdname}
-
出力ファイルを,オブジェクトファイルのフォーマットbfdnameを用いて
書き出します.詳細は,See section ターゲットの選択.
- @env{-F bfdname}
-
- @env{--target=bfdname}
-
入出力両方のファイルに対し,オブジェクトのフォーマットとして
bfdnameを使用します.すなわち,単純に元ファイルから目的ファイルに,
変換せずにデータを転送します.詳細は,See section ターゲットの選択.
- @env{-B bfdarch}
-
- @env{--binary-architecture=bfdarch}
-
生の入力ファイルをオブジェクトファイルに変換するとき役に立ちます.この状
況では,出力先のアーキテクチャはbfdarchに設定されるはずです.入力
ファイルに既知のbfdarchがある場合,このオプションは無視されます.
変換処理で作成される特殊なシンボルで参照することで,このバイナリデータを
プログラム内部でアクセスすることが可能です.これらのシンボルは,
`_binary_objfile_start',`_binary_objfile_end',そ
して`_binary_objfile_size'という名前です.例えば,画像ファイ
ルをオブジェクトファイルに変換した後,これらのシンボルを使用してコード内
でアクセスすることが可能です.
- @env{-j sectionname}
-
- @env{--only-section=sectionname}
-
指名されたセクションのみ,入力ファイルから出力ファイルへコピーします.こ
のオプションは,一回以上与えてもかまいません.このオプションを不適切に使
用すると,出力ファイルが使用不可能になることに注意してください.
- @env{-R sectionname}
-
- @env{--remove-section=sectionname}
-
指名されている,あらゆるsectionnameセクションを出力ファイルから削
除します.このオプションは,一回以上与えてもかまいません.このオプション
を不適切に使用すると,出力ファイルが使用不可能になることに注意してくださ
い.
- @env{-S}
-
- @env{--strip-all}
-
再配置の情報ととシンボルの情報を,ソースファイルからコピーしません.
- @env{-g}
-
- @env{--strip-debug}
-
デバッグシンボルをソースファイルからコピーしません.
- @env{--strip-unneeded}
-
再配置の処理に不要な,すべてのシンボルを削除します.
- @env{-K symbolname}
-
- @env{--keep-symbol=symbolname}
-
ソースファイルからシンボルsymbolnameのみコピーします.このオプショ
ンは,一回以上与えてもかまいません.
- @env{-N symbolname}
-
- @env{--strip-symbol=symbolname}
-
ソースファイルからシンボルsymbolnameをコピーしません.このオプショ
ンは,一回以上与えてもかまいません.
- @env{-G symbolname}
-
- @env{--keep-global-symbol=symbolname}
-
グローバルなsymbolnameシンボルのみ保ちます.すべての他のシンボルを
それらが外部から見えないようにファイルローカルにします.このオプションは
一回以上与えてもかまいません.
- @env{-L symbolname}
-
- @env{--localize-symbol=symbolname}
-
外部から見えないようにするため,シンボルsymbolnameをファイルでロー
カルにします.このオプションは,一回以上与えてもかまいません.
- @env{-W symbolname}
-
- @env{--weaken-symbol=symbolname}
-
シンボルsymbolnameをweakにします.このオプションは,一回以上与えて
もかまいません.
- @env{-x}
-
- @env{--discard-all}
-
ソースファイルからグローバルでないシンボルをコピーしません.
- @env{-X}
-
- @env{--discard-locals}
-
コンパイラが生成したローカルなシンボルをコピーしません.(これらは通常,
`L'または`.'ではじまります.)
- @env{-b byte}
-
- @env{--byte=byte}
-
入力ファイルのbyteバイト毎のバイトのみ保持します(ヘッダデータは影
響されません).byteは,0からinterleave-1までの範囲が可能で,
interleaveは,@option{-i}や@option{--interleave}オプションで与えら
れる,またはデフォルトの4になります.このオプションは,プログラマブル
ROMにファイルを作成するとき便利です.それは特に,
srec
出力ター
ゲットとともに使用されます.
- @env{-i interleave}
-
- @env{--interleave=interleave}
-
interleaveバイト毎に一つのみコピーします.@option{-b}や
@option{--byte}オプションを用いてそのバイトを選択してください.デフォル
トは4です.@command{objcopy}は,@option{-b}や@option{--byte}を指定してい
ない場合,このオプションを無視します.
- @env{-p}
-
- @env{--preserve-dates}
-
出力ファイルのアクセスと編集の日付を入力ファイルと同じに設定します.
- @env{--debugging}
-
可能な場合,デバッグ情報を変換します.特定のデバッグフォーマットのみサポー
トされていて,そして,変換処理は時間がかかるため,これはデフォルトではあ
りません.
- @env{--gap-fill val}
-
valを用いてセクション間のギャップを補充します.このオプションはセ
クションのload address (LMA)に適用されます.それは,低いアドレス
(1)でセクションの大きさを増加し,そ
して,valを用いて作成される余分な空間で補充することで動作します.
- @env{--pad-to address}
-
出力ファイルをload address addressまでパディングします.これは,最
後のセクションの大きさを増加することで動作します.余分な空間は,
@option{--gap-fill}で指定された値(デフォルトはゼロ)で補充されます.
- @env{--set-start val}
-
新しいファイルの開始アドレスをvalに設定します.すべてのオブジェク
トファイルのフォーマットが,開始アドレスの設定をサポートするわけではあり
ません.
- @env{--change-start incr}
-
- @env{--adjust-start incr}
-
開始アドレスをincrを加えることで変更します.すべてのオブジェクトファ
イルのフォーマットが,開始アドレスの設定をサポートするわけではありません.
- @env{--change-addresses incr}
-
- @env{--adjust-vma incr}
-
開始アドレスのように,incrを加えることで,VMAとLMAアドレスを変更し
ます.オブジェクトファイルのフォーマットによっては,セクションアドレスを
任意に変更できないものもあります.これはセクションを再配置しないことに注
意してください.セクションが特定のアドレスにロードされていることをプログ
ラムが期待し,セクションが異なるアドレスにロードされるように変更するため
に,このオプションが使用された場合,プログラムは失敗するかもしれません.
- @env{--change-section-address section{=,+,-}val}
-
- @env{--adjust-section-vma section{=,+,-}val}
-
sectionで指名されたVMAアドレスとLMAアドレスの両方を設定または変更
します.`='が使用された場合,セクションのアドレスは,valに設
定されます.それ以外の場合,valは,セクションアドレスに加えられる,
またはそれから引かれます.上記の@option{--change-addresses}以下のコメン
トを参照してください.入力ファイルにsectionが存在しない場合,
@option{--no-change-warnings}が使用されていない限り,警告が発せられます.
- @env{--change-section-lma section{=,+,-}val}
-
指名されたsectionのLMAアドレスを設定または変更します.LMAアドレス
は,プログラムロード時にセクションがメモリにロードされるアドレスです.通
常これはVMAと同じで,それは,プログラムの実行時のセクションのアドレスで
すが,システムによっては,特にプログラムがROMに保存されるものでは,二つ
が異なる可能性があります.`='が使用されている場合,セクションのアド
レスは,valに設定されます.それ以外の場合,valはセクションア
ドレスに加えられる,またはそれから引かれます.上記の
@option{--change-addresses}以下のコメントを参照してください.
section が入力ファイルに存在しない場合,
@option{--no-change-warnings}が使用されていない限り,警告が発せられます.
- @env{--change-section-vma section{=,+,-}val}
-
指名されたsectionのVMAアドレスを設定または変更します.VMAアドレス
は,プログラムの実行を開始したときにセクションが位置するアドレスです.通
常これはLMAと同じで,それは,セクションがメモリにロードされるアドレスで
すが,システムによっては,特にプログラムがROMに保存されるものでは,二つ
のアドレスが異なる可能性があります.`='が使用されている場合,セクショ
ンのアドレスは,valに設定されます.それ以外の場合,valはセク
ションアドレスに加えられる,またはそれから引かれます.上記の
@option{--change-addresses}以下のコメントを参照してください.
sectionが入力ファイルに存在しない場合,
@option{--no-change-warnings}が使用されていない限り,警告が発せられます.
- @env{--change-warnings}
-
- @env{--adjust-warnings}
-
@option{--change-section-address}や@option{--change-section-lma}や
@option{--change-section-vma}が使用されていて,指名されたセクションが存
在しない場合,警告を発します.これはデフォルトです.
- @env{--no-change-warnings}
-
- @env{--no-adjust-warnings}
-
@option{--change-section-address}や@option{--change-section-lma}や
@option{--change-section-vma}が使用されていて,指名されたセクションが存
在しない場合でも警告を発しません.
- @env{--set-section-flags section=flags}
-
指名したセクションのフラグを設定します.flags引数は,カンマで分け
られたフラグ名の文字列です.認識される名前は,`alloc',
`contents',`load',`noload',`readonly',
`code',`data',`rom',`share',そして`debug'で
す.`contents'フラグを内容のないセクションに対し設定可能ですが,内
容のあるセクションの`contents'フラグとしての意味がありません -- そ
の代わりにセクションを削除します.すべてのフラグがすべてのオブジェクトファ
イルのフォーマットに意味があるわけではありません.
- @env{--add-section sectionname=filename}
-
ファイルをコピーしている間に,指名されたsectionnameの新しいセクショ
ンを追加します.新しいセクションの内容はファイルfilenameからもたら
されます.セクションの大きさは,ファイルのサイズになります.このオプショ
ンは,任意の名前を持つセクションをサポート可能なファイルのフォーマットで
のみ動作します.
- @env{--rename-section oldname=newname[,flags]}
-
セクションの名前をoldnameからnewnameに変更し,オプションでセ
クションのフラグをflagsに,処理中に変更します.名前の変更を実行す
るためにリンカスクリプトを使用すると,オブジェクトファイルとして出力が抑
制されリンクされた実行形式にはならないので,これには利点があります.
このオプションは,`.data'いう名前のセクションを常に作成するので,入
力フォーマットがバイナリのとき,特に役に立ちます.例えば,バイナリデータ
を含んでいる`.rodata'いう名前のセクションを作成したい場合,それを達
成するために以下のコマンドラインを使用することが可能でしょう.
objcopy -I binary -O <output_format> -B <architecture> \
--rename-section .data=.rodata,alloc,load,readonly,data,contents \
<input_binary_file> <output_object_file>
- @env{--change-leading-char}
-
オブジェクトファイルのフォーマットには,シンボルの開始時に特別な文字を使
用するものもあります.そのような文字で最もよくあるのはアンダースコアで,
それはコンパイラがすべてのシンボルの前によく追加するものです.このオプショ
ンは,@command{objcopy}に,オブジェクトファイルのフォーマットを変換して
いる間にすべてのシンボルに前置される文字を変更するよう伝えます.オブジェ
クトファイルのフォーマットが同じ前置文字を使用している場合,このオプショ
ンは効果がありません.それ以外の場合,それは適切に,文字を加えたり,文字
を削除したり,文字を変更したりします.
- @env{--remove-leading-char}
-
グローバルシンボルの最初の文字が,オブジェクトファイルのフォーマットで使
用されているシンボルに前置される特殊な文字の場合,その文字を削除します.
そのような文字で最もよくあるのはアンダースコアです.このオプションは,す
べてのグローバルシンボルから前置されるアンダースコアを削除します.シンボ
ル名に対して異なる規則を持つ,異なるファイルフォーマットのオブジェクト同
士をリンクしたい場合,これは役に立つはずです.これは
@option{--change-leading-char}とは異なり,出力ファイルのオブジェクトファ
イルのフォーマットに依存せず,それは適切なときは常にシンボル名を変更しま
す.
- @env{--srec-len=ival}
-
srec出力でのみ意味があります.生成されているSrecordの最大長をival
に設定します.この長さは,両方のアドレス,データ,そしてcrcフィールドを
カバーします.
- @env{--srec-forceS3}
-
srec出力でのみ意味があります.S1/S2レコードの生成を避け,S3のみのレコー
ドのフォーマットを作成します.
- @env{--redefine-sym old=new}
-
シンボル名をoldからnewに変更します.ソースを持っていない二つ
のものを一緒にリンクしようとし,名前の衝突があるとき便利です.
- @env{--weaken}
-
ファイルのすべてのグローバルシンボルをweakにします.リンカに対し
@option{-R}オプションを使用している他のオブジェクトに対してリンクするオ
ブジェクトを構築するとき,これは便利です.このオプションは,weakなシンボ
ルをサポートしているオブジェクトファイルを使用しているときだけ効果があり
ます.
- @env{--keep-symbols=filename}
-
@option{--keep-symbol}オプションを,ファイルfilenameにリストアップ
されているそれぞれのシンボルに適用します.filenameは単なるフラット
なファイルで,一行に一つのシンボル名があります.行のコメントはハッシュ文
字で導入されます.このオプションは一回以上与えるてもかまいません.
- @env{--strip-symbols=filename}
-
@option{--strip-symbol}オプションを,ファイルfilenameにリストアッ
プされているそれぞれのシンボルに適用します.filenameは単なるフラッ
トなファイルで,一行に一つのシンボル名があります.行のコメントはハッシュ
文字で導入されます.このオプションは一回以上与えてもかまいません.
- @env{--keep-global-symbols=filename}
-
@option{--keep-global-symbol}オプションを,ファイルfilenameにリス
トアップされているそれぞれのシンボルに適用します.filenameは単なる
フラットなファイルで,一行に一つのシンボル名があります.行のコメントはハッ
シュ文字で導入されます.このオプションは一回以上与えてもかまいません.
- @env{--localize-symbols=filename}
-
@option{--localize-symbol}オプションを,ファイルfilenameにリストアッ
プされているそれぞれのシンボルに適用します.filenameは単なるフラッ
トなファイルで,一行に一つのシンボル名があります.行のコメントはハッシュ
文字で導入されます.このオプションは一回以上与えてもかまいません.
- @env{--weaken-symbols=filename}
-
@option{--weaken-symbol}オプションを,ファイルfilenameにリストアッ
プされているそれぞれのシンボルに適用します.filenameは単なるフラッ
トなファイルで,一行に一つのシンボル名があります.行のコメントはハッシュ
文字で導入されます.このオプションは一回以上与えてもかまいません.
- @env{--alt-machine-code=index}
-
出力アーキテクチャに代替のマシンコードがある場合,デフォルトのものの代わ
りにindex番目のコードを使用します.マシンに公式のコードが割り当て
られていて,ツールチェーンが新しいコードに適用するのですが,他のアプリケー
ションはまだ使用されているオリジナルのコードに依存している状況では,これ
は役に立ちます.
- @env{-V}
-
- @env{--version}
-
@command{objcopy}のバージョンナンバーを表示します.
- @env{-v}
-
- @env{--verbose}
-
冗長な出力です.修正されたすべてのオブジェクトファイルをリストアップしま
す.アーカイブの場合,`objcopy -v'は,アーカイブのすべてのメンバー
をリストアップします.
- @env{--help}
-
@command{objcopy}へのオプションの概要を表示します.
Go to the first, previous, next, last section, table of contents.