総合手引 | セクション 1 | English | オプション |
objcopy は変換のために一時ファイルを作成して後でそれらを削除します。 objcopy はすべての変換作業で BFD を使います; つまり BFD が知っている フォーマットはすべて知っている事になるので、明示的に指定しなくても 大部分のフォーマットを認識する事が出来ます。
objcopy で出力先に srec を指定する (例えば -O srec を使う) ことで S レコードを生成できます。
objcopy で出力先に binary を指定する (例えば -O binary を使う) ことで生のバイナリファイルを生成できます。 objcopy で生のバイナリファイルを生成することは、本質的には入力の オブジェクトファイルの内容のメモリダンプを生成することに なるでしょう。 シンボルと再配置情報はすべて捨て去られます。 メモリダンプは出力ファイルに コピーされる中で最も低位のセクションの仮想アドレスから始まります。
S レコードや生のバイナリファイルを生成する場合は、 -S を使ってデバッグ情報を含むセクションを削除するのが良いかもしれません。 場合によっては -R が、バイナリファイルに必要無い情報を含むセクションを削除するのに有用でしょう。
注 - objcopy は入力ファイルのエンディアンを変えられません。 入力ファイルにエンディアン性がある場合 (フォーマットによっては エンディアン性がないものがあります)、 同じエンディアン性のファイルフォーマットか エンディアン性の無いファイル書式 (例: srec) へのみ、 objcopy はコピー可能となります。
infile | |||||||||||||||||
outfile | それぞれ入力と出力ファイルです。 outfile を指定しないと、 objcopy は一時ファイルを作成してから そのファイル名を infile に付けかえて しまいます。 | ||||||||||||||||
-I bfdname | |||||||||||||||||
--input-target=bfdname | 入力ファイルのオブジェクト形式を推測しようとするかわりに bfdname であるとして扱います。 | ||||||||||||||||
-O bfdname | |||||||||||||||||
--output-target=bfdname | オブジェクト形式として bfdname を使って出力ファイルに書き込みます。 | ||||||||||||||||
-F bfdname | |||||||||||||||||
--target=bfdname | 入出力両方のオブジェクト形式が bfdname であるとします; つまり、入力から出力へ無変換でデータを 単純に転送するということです。 | ||||||||||||||||
-B bfdarch | |||||||||||||||||
--binary-architecture=bfdarch | 生のバイナリ入力ファイルをオブジェクトファイルへ変換する場合に有用です。 この場合、出力アーキテクチャを bfdarch に設定可能です。 入力ファイルが既知の bfdarch を持つ場合、このオプションは無視されます。 このバイナリデータは、変換処理によって作成された特殊シンボルを介し、 プログラムからアクセス可能となります。 これらのシンボルは、 _binary_objfile_start, _binary_objfile_end, _binary_objfile_size という名前です。 例えば、画像ファイルをオブジェクトファイルに変換し、 コードからこれらのシンボルを使用することでアクセス可能となります。 | ||||||||||||||||
-j sectionname | |||||||||||||||||
--only-section=sectionname | 指定したセクションのみ入力ファイルから出力ファイルへコピーし、 他のすべてのセクションを捨てます。 このオプションは 2 回以上指定できます。 このオプションを不適切に使うと出力ファイルが 利用できない物になるので注意して下さい。 | ||||||||||||||||
-R sectionname | |||||||||||||||||
--remove-section=sectionname | sectionname で 指定されたセクションをファイルから取り除きます。 このオプションは 2 回以上指定できます。 このオプションを不適切に使うと出力ファイルが 利用できない物になるので注意して下さい。 | ||||||||||||||||
-S | |||||||||||||||||
--strip-all | 再配置とシンボルの情報を入力ファイルからコピーしません。 | ||||||||||||||||
-g | |||||||||||||||||
--strip-debug | デバッグシンボル、デバッグセクションを入力ファイルからコピーしません。 | ||||||||||||||||
--strip-unneeded | 再配置処理に不要なシンボルをすべて取り除きます。 | ||||||||||||||||
-K symbolname | |||||||||||||||||
--keep-symbol=symbolname | 入力ファイルからシンボル symbolname だけをコピーします。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
-N symbolname | |||||||||||||||||
--strip-symbol=symbolname | 入力ファイルからシンボル symbolname をコピーしません。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
-G symbolname | |||||||||||||||||
--keep-global-symbol=symbolname | シンボル symbolname のみをグローバルにします。 他のシンボルはすべて、外部から参照できないようにファイル内ローカルにします。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
-L symbolname | |||||||||||||||||
--localize-symbol=symbolname | シンボル symbolname を、外部から参照できないようにファイル内 ローカルにします。このオプションは 2 回以上指定できます。 | ||||||||||||||||
-W symbolname | |||||||||||||||||
--weaken-symbol=symbolname | シンボル symbolname を weak にします。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
-w | |||||||||||||||||
--wildcard |
他のコマンド行オプションの中で使用される symbolname で、
正規表現の使用を許可します。
疑問符 (?)、アスタリスク (*)、バックスラッシュ (\)、角括弧 ([])
演算子をシンボル名の中のどこででも使用可能にします。
シンボル名の最初の文字が感嘆符 (!) である場合、そのスイッチの意味が
そのシンボルに対しては逆になります。
例えば、
により、objcopy は ``foo'' を除き、``fo'' で始まるすべてのシンボルを weak にします。 | ||||||||||||||||
-x | |||||||||||||||||
--discard-all | 入力ファイルからグローバルでないシンボルをコピーしません。 | ||||||||||||||||
-X | |||||||||||||||||
--discard-locals | コンパイラが生成したローカルシンボルをコピーしません (それらは通常 L か . で始まります)。 | ||||||||||||||||
-b byte | |||||||||||||||||
--byte=byte | 入力ファイルの各 byte 番めのバイトのみを取り出します (ヘッダデータには影響しません)。 byte には 0 から interleave-1 の範囲の値を指定できます。 interleave は、-i または --interleave のオプションで 指定するか、デフォルトの 4 です。 このオプションは ROM に書き込むためのファイルを作成するために有用です。 典型的には srec の出力指定と共に使います。 | ||||||||||||||||
-i interleave | |||||||||||||||||
--interleave=interleave | 各 interleave バイトごとに 1 バイトだけをコピーします。 どれをコピーするかは -b か --byte オプションで 選びます。デフォルトは 4です。 -b か --byte のどちらも指定されていない場合、 objcopy は本オプションを無視します。 | ||||||||||||||||
-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 を加算する事で変更します。 すべてのオブジェクトファイル形式が開始アドレスの設定をサポートしている わけではありません。 | ||||||||||||||||
--change-addresses incr | |||||||||||||||||
--adjust-vma incr | 開始アドレスおよびすべてのセクションの VMA および LMA のアドレスを、incr を 加算する事で変更します。 いくつかのオブジェクトファイル形式では セクションのアドレスを任意の値に変更する事は許されていません。 これはセクションを再配置するのではない事に注意して下さい; もしプログラムがセクションが特定のアドレスにロードされる事を 期待しており、そしてこのオプションがセクションを異なるアドレスに ロードするように使われた場合は、プログラムは正常に 動作しないかもしれません。 | ||||||||||||||||
--change-section-address section{=,+,-}val | |||||||||||||||||
--adjust-section-vma section{=,+,-}val | 指定された section の VMA および LMA アドレスを、 設定または変更します。 = が 指定された場合は、セクションのアドレスは val に設定されます。 そうでなければ val がセクションのアドレスに加算または減算されます。 上の --change-addresses に書かれているコメントも参照して下さい。 入力ファイルに section が存在しない場合は、 --no-change-warnings が指定されていなければ警告が出力されます。 | ||||||||||||||||
--change-section-lma section{=,+,-}val | 指定された section の LMA アドレスを、 設定または変更します。 LMA アドレスは、 プログラムロード時にセクションがロードされるメモリのアドレスです。 これは通常、プログラム実行時のセクションのアドレスである VMA アドレスと同じですが、システムによっては、 特に ROM にプログラムが保持されるものにおいては、両者は異なります。 = が 指定された場合は、セクションのアドレスは val に設定されます。 そうでなければ val がセクションのアドレスに加算または減算されます。 上の --change-addresses に書かれているコメントも参照して下さい。 入力ファイルに section が存在しない場合は、 --no-change-warnings が指定されていなければ警告が出力されます。 | ||||||||||||||||
--change-section-vma section{=,+,-}val | 指定された section の VMA アドレスを、 設定または変更します。 VMA アドレスは、 プログラムが実行開始した後にセクションが置かれるアドレスです。 これは通常、メモリにロードされるセクションのアドレスである LMA アドレスと同じですが、システムによっては、 特に ROM にプログラムが保持されるものにおいては、両者は異なります。 = が 指定された場合は、セクションのアドレスは val に設定されます。 そうでなければ val がセクションのアドレスに加算または減算されます。 上の --change-addresses に書かれているコメントも参照して下さい。 入力ファイルに section が存在しない場合は、 --no-change-warnings が指定されていなければ警告が出力されます。 | ||||||||||||||||
--change-warnings | |||||||||||||||||
--adjust-warnings | --change-section-address, --change-section-lma, --change-section-vma のいずれかが指定された場合、 指定されたセクションが存在しないと警告が出力されます。 これはデフォルトです。 | ||||||||||||||||
--no-change-warnings | |||||||||||||||||
--no-adjust-warnings | --change-section-address, --adjust-section-lma, --adjust-section-vma のいずれかが指定された場合、 指定された セクションが存在しなくても警告を出力しません。 | ||||||||||||||||
--set-section-flags section=flags | 指定されたセクションのフラグを設定します。 引数 flags はフラグ名をコンマで区切った文字列です。 認識するフラグ名は alloc, contents, load, noload, readonly, code, data, rom, share, debug です。 内容を持たないセクションに対して contents フラグを設定可能ですが、 内容を持たないセクションに対して contents フラグをクリアする ことは無意味です。 単にそのセクションを削除してください。 すべてのフラグがすべてのオブジェクトファイル形式で 意味を持つとは限りません。 | ||||||||||||||||
--add-section sectionname=filename | sectionname で指定された名前の新しいセクションをファイルの コピー中に付け加えます。 新しいセクションの内容はファイル filename から取り込まれます。 セクションのサイズはファイルのサイズになります。 このオプションは任意の名前を持つセクションを サポートできるファイル形式でのみ機能します。 | ||||||||||||||||
--rename-section oldname=newname[,flags] |
セクションの名前を oldname から newname へ変えます。
この処理において、セクションフラグを flags に変えることもできます。
リンカスクリプトを使ってリネームすることに対する利点は、
出力がオブジェクトファイルのままであり、
リンク済実行形式とはならないことです。
このオプションが特に有用なのは、入力フォーマットがバイナリの時です。 なぜなら、本オプションは .data セクションを常に作成するからです。 例えば、バイナリデータを含む .rodata セクションを代りに作成したい場合、 次のコマンドラインで実現可能です:
| ||||||||||||||||
--change-leading-char | いくつかのオブジェクトファイル形式でシンボルの最初に特殊文字が 使われています。 もっとも一般的なのはアンダスコアで、しばしば コンパイラが各シンボルの前に付け加えます。 このオプションは objcopy に、オブジェクトファイル形式を変換する時に各シンボルの始まりの 文字を変更するよう指示します。 変換前後のオブジェクトファイル形式がシンボルの始まりに同じ文字を 使っている場合は、このオプションは何もしません。 そうでなければ、 このオプションで文字を付け加える、または文字を削除する、または 文字を変更する事が、適切に行われます。 | ||||||||||||||||
--remove-leading-char | グローバルシンボルの最初の文字が、オブジェクトファイル形式で使われる シンボルの最初に付加される特殊文字だった場合は、その文字を取り除きます。 シンボルに前置される最も一般的な文字はアンダスコアです。 このオプションは前置されているアンダスコアをすべての グローバルシンボルから取り除きます。 これはシンボル名の取り決めが 異なるファイル形式のファイルを一緒にリンクしたい場合に有用です。 これは --change-leading-char とは異なります。 なぜならこのオプションでは適切であれば、 出力のオブジェクトファイル形式とは関係なく 常にシンボル名を変更してしまうからです。 | ||||||||||||||||
--srec-len=ival | srec 出力でのみ意味があります。 S レコードの長さを val に設定します。 この長さには、アドレス、データ、CRC フィールドも含まれます。 | ||||||||||||||||
--srec-forceS3 | srec 出力でのみ意味があります。 S1/S2 レコードの生成を防ぎ、S3 レコードのみのフォーマットにします。 | ||||||||||||||||
--redefine-sym old=new | シンボルの名前を old から new へ変更します。 ソースが無い 2 つのものリンクしようとしていて、 名前の衝突があるときに有用でしょう。 | ||||||||||||||||
--redefine-syms=filename | ファイル filename にリストされたシンボルの組 "old new" のそれぞれに対し、--redefine-sym を適用します。 amp;filename は単なるフラットファイルであり、シンボルの組 1 つにつき 1 行を占めます。 ハッシュ文字によりコメント行を置くことができます。 このオプションは複数回指定することができます。 | ||||||||||||||||
--weaken | ファイルのすべてのグローバルシンボルを weak に変更します。 これは、-R オプションをリンカに使用して、 他のオブジェクトとリンクするオブジェクトを作成するときに有用です。 このオプションは、オブジェクトファイルフォーマットが weak シンボルをサポートするときのみ効果があります。 | ||||||||||||||||
--keep-symbols=filename | ファイル filename で列挙されている各シンボルに対し、 --keep-symbol オプションを適用します。 filename は単に平坦なファイルであり、1 行に 1 シンボルが記述されます。 行コメントは、ハッシュ文字で開始します。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
--strip-symbols=filename | ファイル filename で列挙されている各シンボルに対し、 --strip-symbol オプションを適用します。 filename は単に平坦なファイルであり、1 行に 1 シンボルが記述されます。 行コメントは、ハッシュ文字で開始します。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
--keep-global-symbols=filename | ファイル filename で列挙されている各シンボルに対し、 --keep-global-symbol オプションを適用します。 filename は単に平坦なファイルであり、1 行に 1 シンボルが記述されます。 行コメントは、ハッシュ文字で開始します。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
--localize-symbols=filename | ファイル filename で列挙されている各シンボルに対し、 --localize-symbol オプションを適用します。 filename は単に平坦なファイルであり、1 行に 1 シンボルが記述されます。 行コメントは、ハッシュ文字で開始します。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
--weaken-symbols=filename | ファイル filename で列挙されている各シンボルに対し、 --weaken-symbol オプションを適用します。 filename は単に平坦なファイルであり、1 行に 1 シンボルが記述されます。 行コメントは、ハッシュ文字で開始します。 このオプションは 2 回以上指定できます。 | ||||||||||||||||
--alt-machine-code=index | 出力アーキテクチャが別のマシンコードを持つ場合、 デフォルトのコードの代りに index 番目のコードを使用します。 あるマシンに公式なコードが割り当てられており、 ツールチェーンが新規コードを採用するが、 他のアプリケーションは元のコードが使われることに依存している場合、 有用となります。 | ||||||||||||||||
--writable-text | 出力ファイルに書き込み可能の印を付けます。 このオプションはすべてのファイル形式に対して意味があるわけでは ありません。 | ||||||||||||||||
--readonly-text | 出力ファイルに書き込み禁止の印を付けます。 このオプションはすべてのファイル形式に対して意味があるわけでは ありません。 | ||||||||||||||||
--pure | 出力ファイルにデマンドページの印を付けます。 このオプションはすべてのファイル形式に対して意味があるわけでは ありません。 | ||||||||||||||||
--impure | 出力ファイルに impure の印を付けます。 このオプションはすべてのファイル形式に対して意味があるわけでは ありません。 | ||||||||||||||||
--prefix-symbols=string | 出力ファイルのシンボルすべてに string を前置します。 | ||||||||||||||||
--prefix-sections=string | 出力ファイルのセクションすべてに string を前置します。 | ||||||||||||||||
--prefix-alloc-sections=string | 出力ファイル中の割り当てられたセクションすべての名前すべてに amp;string を前置します。 | ||||||||||||||||
--add-gnu-debuglink=path-to-file | amp;path-to-file への参照を含む .gnu_debuglink セクションを 生成し、出力ファイルに追加します。 | ||||||||||||||||
--only-keep-debug |
ファイルをストリップします。
すなわち、--strip-debug
により除去される任意のセクションを削除し、デバッグ用
セクションを残します。
この意図は、このオプションと --add-gnu-debuglink とを 組み合わせて使用し、2 パートの実行可能ファイルを生成することに あります。 1 番目はストリップされたバイナリで、RAM と 配布ファイルにおいてより少ない空間を占めるようになり、 2 番目はデバッグ情報ファイルで、デバッグ機能が要求される場合にのみ 必要となるものです。 これらのファイルの生成のための推奨手順は次のようになります。
注意: デバッグ情報ファイルのための拡張子の .dbg は、任意のものを選択できます。 また、--only-keep-debug のステップをやるか やらないかも選択次第です。代わりに次のように行なうこともできます。
すなわち、 --add-gnu-debuglink が指すファイルは 完全な情報を持つ実行可能形式でも構いません。 amp;--only-keep-debug スイッチを使い生成したファイルでなくても構いません。 | ||||||||||||||||
-V | |||||||||||||||||
--version | objcopy のバージョン番号を表示して終了します。 | ||||||||||||||||
-v | |||||||||||||||||
--verbose | 出力を冗長にします: 変更されたすべてのオブジェクトファイルをリストします。 アーカイブの場合は "objcopy -V" でアーカイブのメンバがすべて リストされます。 | ||||||||||||||||
--help | objcopy のオプションのサマリを表示して終了します。 | ||||||||||||||||
--info | 利用可能なアーキテクチャとオブジェクト形式すべてのリストを表示します。 | ||||||||||||||||
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''.
2004-04-09 | OBJCOPY (1) | binutils-2.14.91 |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | If you are angry with someone, you should walk a mile in their shoes - then you'll be a mile away from them, and you'll have their shoes. | ” |