問題タブ [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.
binary - 実行可能ファイル/オブジェクト ファイルから 0 と 1/マシン コードを確認するにはどうすればよいですか?
私はすでにこれを試しました.a.outファイルをテキストエディタで開きましたが、次のような指示が含まれた文字の束しか得られません:
üÙ
c - C メモリ エラーを追跡するツールを実装し、オーバーライドされた malloc などが呼び出された場所を見つける
C/C++ プログラムのメモリ管理に役立つツール (Linux 用) の実装を依頼されました。主な目的はメモリ リークを追跡することですが、特に memcpy への重複する引数をチェックしています。
私は実際にこれらの関数へのすべての呼び出しをインターセプトするために自分のバージョンが必要なので (たとえば、他のライブラリから)、実際にそれらをオーバーライドする必要があります。したがって、すべての投稿で提案されている #define トリックは使用できません。私の質問は、元のソース ファイル名、呼び出しが行われた関数、および行番号を見つける方法です。
これまでの私の唯一のアイデアは、デバッグ情報を使用してプログラムをコンパイルし、オブジェクト ファイル (Linux を使用しているため ELF ) を掘り下げることです。私はオブジェクト ファイルで遊んだことがなく、アセンブリ言語の基本しか知らないので、これはかなり大変な作業のようです。
これを達成するための他の簡単な方法はありますか?似たようなことに取り組んだことがある人が、私がそれを始めるのを手伝ってくれるとしたら:)?.
ありがとうございました
d - プリコンパイルされた Windows OMF BLAS/LAPACK?
Windows 用の事前にコンパイルされた BLAS および LAPACK バイナリを OMF オブジェクト形式で入手できる場所はありますか? これらにいくつかの D 言語コードをリンクしたいと考えています。関連するライブラリを COFF 形式で入手できる場所を知っています。COFF を OMF に変換する objconv ツールも知っていますが、これは完全には理解できない理由で実際には機能しないようです。これらはシンボルのアンダースコアに関連しているようですが、これらを処理するためにほぼすべての設定を試しましたが、どれも機能していないようです。
または、参照バイナリをOMFに変換して、実際にDMDでコンパイルされたコードに適切にリンクする方法を知っている人はいますか? 最後の手段として、CLAPACK、CBLAS、および F2CLIB を DMC でビルドする方法を知っている人はいますか? これらに付随するビルド プロセスは、GCC ツールチェーンに完全に対応しているようです。
windows - gccを使用した16ビット.COM実行可能ファイルの作成
.COM executables
Windows用のgccディストリビューション(たとえばMINGW)を使用して16ビット(DOS)を作成する方法はありますか?
assembly - MMIX用アセンブラファイルを複数リンクする方法
「fprint」のようなものを実装する小さなライブラリを書いたとします。私に MMIX を教えてくれる本 (Das MMIX-Buch、ドイツ語) は常に lib 全体を新しいプログラムにコピーしますが、私はこのアプローチが嫌いです。ライブラリを 1 つのオブジェクト ファイルにアセンブルし、メイン プログラムを別のオブジェクト ファイルにアセンブルして、これら 2 つをリンクする方法はありますか? これを行う方法?
c++ - 最初にオブジェクト ファイルにコンパイルする理由
昨年、私は研究大学で Fortran でプログラミングを始めました。私の以前の経験のほとんどは、PHP や古い ASP などの Web 言語に関するものでした。そのため、ステートメントをコンパイルする初心者です。
変更している 2 つの異なるコードがあります。
実行可能ファイルを作成する前に、モジュールから .o ファイルを作成 する明示的なステートメント ( gfortran -c filea.f90 など) があります。
もう 1 つは、実行可能ファイルを直接作成する方法です (.mod ファイルを作成する場合もありますが、.o ファイルは作成しません。例: gfortran -o 実行可能ファイルa.f90 ファイルb.f90 メインファイル.f90)。
- ある方法が他の方法よりも優先される理由 (おそらく Makefile 以外) はありますか?
c++ - あるコンパイルで作成されたオブジェクトファイルを別のコンパイルで作成されたオブジェクトファイルにリンクできますか?
具体的には、両方のコンパイラが同じプラットフォーム(OS +命令セット)上にあると仮定します。ただし、オブジェクトファイルの1つは、コンパイラに依存するコードから作成されました。一方、コードはオブジェクト指向であり、カプセル化を尊重します。
私が作っている一種のフレームワークのためにこれが必要です。ターゲットプラットフォームは、GCCおよびJava仮想マシンである任意のシステムです。実際、フレームワークは各プラットフォームでコンパイルされます。フレームワークユーザーを使用するコンパイラーは彼次第です。
c++ - C/C++。結合されたオブジェクト ファイルに対するライブラリの利点
ライブラリ内で複数のオブジェクト ファイルを結合することは一般的ですが、(少なくとも Linux では) 複数のオブジェクト ファイルを別のオブジェクト ファイルに結合することができます。
( GCC でコンパイルされた 2 つの .o オブジェクト ファイルを 3 つ目の .o ファイルに結合するを参照してください)
結合されたオブジェクト ファイルの代わりにライブラリを使用することには、次のような欠点があります。
1: 特にすべてのファイルが同じことを行う場合は、リンク時に 1 種類のファイル (オブジェクト) のみを使用する方が簡単です。
2: (少なくとも GCC では) リンクするとき、ライブラリ (デフォルト) は順序付けされる必要があり、循環依存関係を処理できません。
ライブラリにはどのような利点があるのか を知りたいです(キャッチ22を除いて、それらはよく使用されます)。
しばらく検索した後、私が得た唯一の説明は、単一のライブラリが複数のオブジェクト ファイルよりも優れているということです。
macos - ld を使用して Mac OS X でアセンブリ ファイルをリンクできない
デフォルトでXcodeにインストールされているnasmとldを使用して、64ビットMac OS X Lionを使用して基本的なアセンブリファイルを実行しようとしています。
文字を出力するアセンブリ ファイルを作成し、nasm を使用してビルドしました。
nasm -f elf -o program.o main.asm
ただし、ld とリンクしようとすると、かなりの数のエラー/警告で失敗します。
ld -o program program.o
そのため、これらの問題のいくつかを修正しようとしましたが、どこにも行きませんでした.
これが私が試したことの1つです:
ld -arch i386 -e _start -o program program.o
これはうまくいくと思っていましたが、間違っていました。
オブジェクト ファイルを、nasm と ld が一致する互換性のあるアーキテクチャにするにはどうすればよいでしょうか?
また、プログラムのエントリ ポイントをどのように定義しますか (現在、私は上記のglobal _start
in を使用していますが、あまり効果がないようです)。.section text
_start
ld を使用してオブジェクト ファイルをバイナリ ファイルに正常にリンクする方法について少し混乱しています。それらを一致させるコード (または nasm または ld への引数) が不足していると思います。
どんな助けでも感謝します。
c++ - WxWidgets コンパイル ヘルプ
WxWidgets (Latest; VC9; Release) をコンパイルしようとしましたが、*.obj および *.pch ファイルのみが出力され、*.lib ファイルは出力されませんでした。*.obj ファイルはオブジェクト ファイルであり、*.pch ファイルはプリコンパイル済みヘッダーであることはわかっていますが、C++ から参照するのでしょうか、それとも何らかの方法で *.lib ファイルに変換する必要があるのでしょうか。
ところで、私は *.pch を使用したことがなく、まったく慣れていません。私はC++を数か月しか使用していません...