問題タブ [nm]
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 - gcc 4.8.4 はデフォルトで数学ライブラリを静的にリンクしますか?
gcc 4.8.4 が示す次の動作を説明できません。次のコード スニペットの名前をpow_main.c.
次のコマンドラインを使用してプログラムをコンパイルしています。
-cプログラムをコンパイル ( ) しているだけで、リンクしていないことに注意してください。また、コンパイラの最適化はすべて無効になっています ( -O0)。オブジェクト ファイルに含まれるシンボルを調べると、次のことがわかります。
私には、コンパイラがメソッドへの参照をライブラリpowから静的に解決したか、インラインコードで呼び出しを最適化したようです。mathpow
powオブジェクトファイルにシンボルが存在しないのはなぜですか?- 外部参照を解決する責任があるのはリンカではなく、静的か動的か?
- オブジェクト ファイルに未定義の (
U) シンボルがpow存在するべきではありませんか?pow_main.o
プラットフォームの詳細は次のとおりです。
編集: 私の 2 つの疑いの 1 つが正しいようです。gcc は式を事前に計算し、定数に置き換えました。
ここでの問題は、そのような最適化をオフにする方法O0です。
c - gcc: BSS としてコンパイルされたスレッドローカル変数
i686/32 ビット アーキテクチャの Ubuntu 14.04 コンピューターで、(バージョン 4.8.2) を使用してスレッド ローカル ストレージ(TLS) クラスを初めて使用し、テストしています。gcc
__threadキーワードが目的の効果を持っているかどうかを調べるために、この最小限のテスト プログラムをgcc test.c(エラーや警告なしで)コンパイルします。
ツールを使用して、オブジェクト コード内nmのシンボルのストレージ クラスを確認します。i
結果は
これはi、共通のグローバルな初期化されていない変数 (BSS セクションに格納されている) として扱われることを意味します。によると、スレッド ローカル ストレージ変数はではなくman nm文字で示されます。LB
ここで何が問題なのですか?
これはnm問題ですか、それとも本当の問題ですか?
c++ - オフセットでメンバーを検索
私は(大きな)クラスとそのクラスへのオフセットを持っています。そのオフセットで定義されたメンバーを効率的に見つけるにはどうすればよいですか?
例:
のオフセットが与えられ、4と仮定sizeof(int) == 4すると、「b」を取得したいと思います。
実行時にこれを実行したくないのは明らかなので、nm、 、objdumpおよびgdbしばらくの間いじっていましたが、これを行うことができませんでした。
linker - GNU nm ユーティリティの使用時にアドレス出力をスキップする
nm経由で出力しているときにアドレス出力をスキップする方法はありますか?
nm 出力からの抜粋を次に示します。
この出力を取得したい:
git-bash コマンドラインを使用してこのタスクを達成するにはどうすればよいですか? nmユーティリティで対応するオプションを探しましたが、そのようなオプションはないようです。
linux - 共有ライブラリのバージョンが正しくないことを示す nm の出力
共有ライブラリを構築したばかりですが、nm コマンドを使用して依存関係を調べると、出力は次のようになります。
の意味がわかりませんが@@ZLIB_1.2.2、実際に libgio をビルドするコマンドは
自分でlibz.so.1.2.8ソースからビルドし、libgio-2.0.so.0.2701.0 の同じディレクトリに置きます。システムの libz(/usr/lib/libz.so) と同じバージョンではありません
それで、私の質問は、なぜ のnm出力@@zlibが1.2.2ではなくなの1.2.8ですか? @@ZLIB_1.2.2nm出力の意味は何ですか?
ありがとう