問題タブ [object-files]

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.

0 投票する
3 に答える
2782 参照

c - 実行可能で再配置可能なオブジェクトファイルの疑い

簡単なHelloWorldプログラムを作成しました。

再配置可能オブジェクトファイルと実行可能ファイルがどのように見えるかを理解したかったのです。main関数に対応するオブジェクトファイルは

ここで、printfの関数呼び出しはcallq 13です。私が理解していないことの1つは、なぜそれが13なのかということです。つまり、アドレス13で関数を呼び出すということです。13次の指示がありますよね?? これはどういう意味ですか?

mainに対応する実行可能コードは

これがcallq4003c0です。ただし、バイナリ命令はe8 e1 feffffです。4003c0に対応するものはありません。私が間違っているのは何ですか?

ありがとう。バラ

0 投票する
2 に答える
37735 参照

c++ - .o ファイルを .exe に変換

.c ソース コードから作成されたオブジェクト ファイル .o を .exe に変換することはできますか? 可能であれば、gcc を使用した直接コマンドはありますか?

0 投票する
2 に答える
58614 参照

gcc - 2 つの GCC コンパイル済み .o オブジェクト ファイルを 3 つ目の .o ファイルに結合

2 つの GCC コンパイル済み .o オブジェクト ファイルを 3 つ目の .o ファイルに結合するにはどうすればよいですか?

ソース ファイルにアクセスできる場合、-combineGCC フラグはコンパイル前にソース ファイルをマージします。

.oただし、これはソース ファイルに対してのみ機能し、GCC はこのコマンドの入力としてファイルを受け入れません。

通常、.oリンカーの出力を入力として使用できないため、ファイルのリンクは正しく機能しません。結果は共有ライブラリであり、結果の実行可能ファイルに静的にリンクされません。

0 投票する
5 に答える
479 参照

c++ - C++ プログラムのコンパイルを理解するのに助けが必要

C++ プログラムのコンパイルとリンクがよくわかりません。C++ プログラムをコンパイルして生成されたオブジェクト ファイルを (わかりやすい形式で) 見る方法はありますか。これは、オブジェクト ファイルの形式、C++ クラスのコンパイル方法、コンパイラがオブジェクト ファイルを生成するために必要な情報を理解し、次のようなステートメントを理解するのに役立ちます。

クラスが入力パラメーターと戻り値の型としてのみ使用される場合、クラス ヘッダー ファイル全体を含める必要はありません。前方宣言で十分ですが、派生クラスが基本クラスから派生する場合は、基本クラスの定義を含むファイルを含める必要があります (「Exceptional C++」から取得)。

オブジェクトファイルのフォーマットを理解するために「Linking and Loading」という本を読んでいますが、C++ ソースコード用に特別に調整されたものを好むでしょう。

ありがとう、

ジャグラティ

編集:

nm を使用すると、オブジェクト ファイルに存在するシンボルを確認できることはわかっていますが、オブジェクト ファイルについてもっと知りたいと思っています。

0 投票する
4 に答える
164 参照

c++ - コンパイルするオブジェクト ファイルを自動的に選択する

最近、C++ プロジェクトの単体テスト ( GoogleTestを使用) の作成を開始しました。メイン プロジェクトのビルドは非常に簡単です。GCC-MM-MDフラグを使用してオブジェクト ファイルの依存関係を自動的に生成し、すべてのオブジェクト ファイルをリンクして出力実行可能ファイルを作成します。驚きはありません。

しかし、単体テストを書いているときに、各テストをコンパイルするために必要なオブジェクト ファイルを make または GCC に判断させる方法はありますか? 現在、私はかなり素朴な解決策 (それと呼べるなら) を持っています。これは、すべての単体テストのために利用可能なすべてのオブジェクト ファイルをまとめてコンパイルするもので、明らかに (時間とスペースの両方の点で) 無駄です。元のソース ファイルの依存関係を生成する方法と同様の方法で、特定の単体テストに必要なオブジェクト ファイルを特定する方法 (make、gcc、sed、またはその他のものを使用) はありますか?

0 投票する
2 に答える
16298 参照

qt - Qt / qmakeを使用するときに、生成されたファイル(オブジェクトファイルなど)を別のフォルダーに配置するにはどうすればよいですか?

qmakeを使用するQtプロジェクトがあります。明瞭さと読みやすさを向上させるために、私は

  • ソースファイル
  • ビルドシステム
  • 生成されたファイル(オブジェクトファイルなど)

分ける。

したがって、私の最初のステップは、ソースファイルをsrc/サブディレクトリに配置することでした。

このようにして、ビルドシステム(* .pro)からソースファイルを分離しました。ただし、その後を実行qmakeするmakeと、生成されたファイル(オブジェクトファイルなど)がメインプロジェクトフォルダーに配置されます。

少なくとも、それらはsrc/フォルダーに入れられませんでしたが、どのように指定すれば、それらが次のような別のサブフォルダーに入れられるようになりbuild/ますか?

(ところで、ターゲットバイナリがどこに配置されるかは気にしませんが、ターゲットバイナリmyprojectを配置するのではなく、プロジェクトフォルダに直接配置する必要があると思いますbuild/。)

0 投票する
1 に答える
454 参照

assembly - オブジェクトファイルの構造

アセンブリのリンクに問題があります。アセンブリにNASMを使用し、それをldとリンクします。マイナーな問題の1つは、GLOBALディレクティブが機能するのは、.dataセクションを定義した場合のみであるということです。(coffを使用することにしました。これは、-cオプションを指定してg ++から出力されたものと最も類似した形式であったためです)。主な問題は、リンクした後でも、呼び出しが何らかのアドレスにつながり、関数がそこにないことです。あなたの時間を読んでくれてありがとう、そしてあなたがいくつかのアドバイスや多分キーワードを持っていたら、私はリンクとシンボルについて何かを得るためにグーグルするべきです、それは完全に素晴らしいでしょう。

0 投票する
5 に答える
73477 参照

c++ - 静的ライブラリの内容

私は静的ライブラリを持っていますmystaticlib.a. その中のオブジェクトファイルの数など、その内容を見たいです。

gccでこれを行うにはどうすればよいですか?

0 投票する
1 に答える
722 参照

debugging - C ++ CLI .objファイルの読み方(単一ファイルのコンパイル結果)

VisualStudio2010のC++CLIプロジェクトに小さな(<300行)C++ファイルがあります。デバッグ/リリース構成に応じて異なる処理を行うマクロをいくつか作成しました。

結果の.objファイル(デバッグとリリースでコンパイルする場合)を確認し、2つを比較できるようにしたいと思います。難しいのは、ファイルがバイナリであり、その形式がわからないことです。

マクロが破壊的でないことを確認する他の方法があると確信しています。たとえば、実行時に両方のモードで試してみてください。ただし、これにははるかに時間がかかります。さらに、それらの.objがそれらに何を持っているかを学ぶのはクールでしょう。

ありがとうございます。ご不明な点がありましたらお知らせください。

0 投票する
3 に答える
338 参照

c++ - コンパイル中に「未定義の参照」として報告されるテンプレート関数

これらは私のファイルです:

-------- [c.hpp] --------

-------- [c.cpp] --------

-------- [v.cpp] --------

-------- [main.cpp] --------

コマンドg++-cmain.cppおよびg++-c c.cppなどを使用して、上記のすべてのファイルに対して「.o」ファイルを生成できます。しかし、「。o」ファイルをg ++ -o car co main.o voにリンクしようとすると、次のエラーが発生します。

main.cppの#include"c.cpp"のコメントを外すとエラーはなくなりますが、この方法でcppファイルを含めるのは悪い習慣かもしれません。私はこれを間違っていますか?個別のオブジェクトファイルを作成してそれらをリンクしながら、テンプレート化された宣言に対応するためのより良い方法はありますか?ps:私ははるかに複雑なクラス構造でテンプレート化された関数を使用しています。ここに示されているのは、私が直面しているエラーの種類を示すためのほんの小さな例です。