問題タブ [objcopy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - 現在のプラットフォームの BFD アーキテクチャ仕様を入手するにはどうすればよいですか?
次の方法を使用して、C プログラムにテキスト ファイルを埋め込みました: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967
objcopyは、「--output」オプションでターゲットを指定する必要があります。
objcopy がユーザーのアーキテクチャを使用するように、Makefile で「--output」を設定するにはどうすればよいですか?
ありがとう。
automake - Automake:バイナリターゲットにテキストファイルを埋め込む
バイナリにいくつかのテキストファイルを埋め込む必要があります。これは現在、configure.inスクリプトに追加された2行で行われ、「クリーン」を実行して$target.oファイルにobjcopyを実行します。なぜ必要なのかと聞かないでください。このアプリでは、必要なだけです。
私がやりたいのは、それらのテキストファイルをソースとしてリストし、最終的なターゲットとリンクする必要がある*.oファイルにそれらをobjcopyするようにmakeに指示するautomake(Makefile.am )定義を作成することです。必要なCLEANFILESに追加することもできます。
さて、 final _LDADDと言ったのはわかっていますが、automake/configureにそのトリックを実行するように指示する方法が見つかりません。
ヘルプ...
elf - objcopy パラメータ --strip-all は ELF フォーマットのどの部分を削除しますか?
私は自分のプログラムをコンパイルしてリンクし、次のようにビルドされた ELF32 リトル エンディアンのフォーマットを取得しました。
次に、以下のコマンドを使用して、フォーマットをバイナリに変更する必要があります。それが私が聞いたことです。しかし、ELF32形式のどの部分がパラメータ「--strip-all」を正確に削除するのか、バイナリ形式はELF32形式とどのように違うのか教えてもらえますか?
上記の ELF32 フォーマットの詳細を含めましたので、(可能であれば) 削除されたパーツに色を付けることができます。
どうもありがとうございました。
c - オブジェクトモジュール(gcc、ld、x86、objcopy)の静的関数をオーバーライドすることは可能ですか?
オブジェクトモジュール内の静的スコープで関数をオーバーライドする方法はありますか?
このようなものから始めると、グローバルシンボル「foo」を持つモジュールは、ローカルシンボル「bar」を呼び出す関数であり、ローカルシンボル「baz」を呼び出します。
1つのグローバル「foo」と2つのローカル「bar」と「baz」があります。
バーとバズを実行する単体テストを作成したいとします。次のことができます。
そして今、barとbazはグローバルシンボルであり、モジュールの外部からアクセスできます。ここまでは順調ですね。
しかし、「baz」の上に自分の関数を挿入し、「bar」に挿入した「baz」と呼ばせる場合はどうなりますか?
それを行う方法はありますか?
--wrapオプションはそれを行わないようです...
main()から呼び出されたbazはラップされましたが、barはラップされたbazではなくローカルbazを呼び出します。
バーにラップされたバズを呼び出させる方法はありますか?
オブジェクトコードを変更して関数呼び出しのアドレスをいじくり回す必要がある場合でも、自動化された方法で実行できれば十分かもしれませんが、その場合は少なくともi386とx86_64で動作する必要があります。
-スティーブ
linux - objcopyのパディングセクションを停止する方法
私はbash(ubuntu linux)でobjcopyを使用しており、次の表彰を使用してELFファイルから2つのセクションをコピーしようとしています。
問題は、objcopyがセクション間にパディングを追加していることです。objcopyがセクションをパディングするのを防ぐ方法(フラグ?)はありますか?
セクションはファイル内に次々に配置されるため、いかなる種類のパディングも必要ありません。
c++ - MinGW 32 と 64 の両方に objcopy からのバイナリ BLOB を含める
MinGW と MinGW-64 を使用して DLL とリンクするために、objcopy を使用してテキスト ファイルをオブジェクト ファイルに変換しています。MinGW ではすべて正常に動作しますが、MinGW-64 では「`binary_src_glsl_RGBtoHSV_glsl_end' への未定義の参照」という形式のエラーが発生します。元のファイルは RGBtoHSV.glsl という名前で、binary\src\glsl フォルダーにあります。objcopy からの出力では、変数名は _binary_src_glsl_RGBtoHSV_glsl_end です。そのファイルの変数にアクセスするための私のコードは次のとおりです。
変数名を変更して、前にアンダーコアを付けると、次のようになります。
次に、そのシンボルは MinGW-64 で見つかりますが、MinGW (32 ビット) では見つかりません。--remove-remove-leading-char オプションを objcopy に試してみましたが、効果はありませんでした。私が見る限り、私のオプションは、MinGW 32 ビット用にビルドするときに「--prefix-symbol _」を使用して objcopy によって生成された変数名にアンダースコアを追加することです。この場合、上記の変数名は 32 ビットで機能します。そして64ビット。
この問題の別の解決策はありますか? 理想的には、次のようなものが欲しいです
ここで、fix_underscore_problem は先頭のアンダースコアの問題を修正する魔法のコマンドです。
更新 (2012-07-01): Win32 で GCC を使用して先頭のアンダースコアをアセンブリ シンボルに追加するに記載されているアドバイスを使用しますか? 使用するヘッダーファイルで変更しました
これで問題は解決したようですが、今ではこれがどれほど移植性があるのだろうかと思います。MSVC またはこれを行う C++ 標準の方法で利用できる同等の構文はありますか?
compilation - Objcopy、どのようにバイナリ出力を作成しますか?
私はbinutilsやgccantに慣れていないので、いくつかの一般的な質問があります。これについては、マニュアルには記載されていません。
Cとアセンブリ(nasm構文)を使用しており、出力に生のバイナリファイルが必要です。まず、コードをパラメーターを使用してobjecファイルにコンパイルします。
次に、セグメントを必要な順序に並べるだけの簡単なスクリプトを使用して、すべてのファイルをリンクします。
そして、生のバイナリを取得するには、objcopyを使用します
全体として、 .textセグメントと.dataセグメント、および32ビットコードのみを含むバイナリファイルが必要です。
1.この方法で欲しいものを手に入れることはできますか?
2.それを行う他の方法はありますか?(簡単でも複雑でも)
助けてくれてありがとう。
Asmコードのコンパイルに問題はなく、Cコードのほとんどすべての問題があります。
c - 位置独立コードで絶対記号を使用する方法
次のコマンドを使用してelfファイルを作成しました:
elf には 3 つの絶対シンボル (binary_start、binray_end、binary_size) があります。
このエルフを共有ライブラリにコンパイルしようとしました。
問題は、-fpic を使用しているときに size_symbol と end_symbol に到達できないことです (シンボルのアドレスが間違っています)。
では、位置に依存しないコードでこの種のシンボルを使用する適切な方法は何ですか?
elf - ELF アーカイブ ファイル内のセクションの実際の位置を取得するにはどうすればよいですか?
Linux で .a ELF アーカイブ ファイルからバイナリ セクションを抽出したいと考えています。
アーカイブ ファイルに対して objdump -h を実行すると、アーカイブ ファイルに含まれるオブジェクト ファイルと、各セクションのセクション ヘッダーが一覧表示されます。ただし、[ファイル オフセット] 列は、アーカイブ内のオブジェクト ファイルの位置に関連しているように見えます。そうしないと、すべてのセクションが重なってしまうからです。
dd を使用して、アーカイブ ファイルからバイナリ情報を抽出できると思っていました。( ELF セクションのコンテンツのみを抽出する方法を参照してください)。アーカイブでこれを行うにはどうすればよいですか?
また、抽出しているセクションがこのコマンドで追加されることにも言及する必要があります。
gcc - ARM objcopy で空のバイナリ ファイルが生成される
でデバイスにフラッシュするのに適したファイルにファイルarm-none-eabi-objcopyをコピー/変換するにはどうすればよいですか?.axf.binlm4tools
.axfでコンパイルおよびリンクされた〜20KBのファイルがありますarm-none-eabi-*。興味のある方は、これが Stellaris Launchpad です。
プロジェクトで提供されている例を変更して、stellaris-launchpad-template-gccC++ コードでコンパイルしようとしています。(ファイルに従って)フォーマットの.axfファイルを生成することができましたが、やろうとするとelf32-littlearm.lst
プログラム可能なファイルに変換するために、.binファイル出力のサイズは 0 バイトです。この質問は、同様の問題について説明しています。.axfファイルが完全であると確信しているのに、.binファイルに何も入力されていないのはなぜですか? を削除する-O binaryと、ファイルは正常にコピーされます。ディレクトリは書き込み可能で、すべての権限は問題ありません。SO とその他のインターネットの両方でさまざまな用語を検索してみましたが、どれも役に立ちませんでした。これまで誰もこの問題を抱えていなかったようです。
実行arm-none-eabi-objdump -D main.axfすると、アセンブラーのように見えるファイルのダンプが生成されます。
これは正しいですか、それとも適切にコンパイルしていないのでしょうか。これは何らかのアセンブラのように見えます。
.axfファイルに関する情報:
を実行した後arm-none-eabi-readelf -lS main.axf、プログラム ヘッダーは返されません。