0

Linux マシンでコンパイルされた単純な C++ プログラムである 2 つのバイナリがあります。最初のバイナリ (my_native_prog と呼びます) は、ビルド ツール (g++、as など)、ライブラリ、およびビルド マシンに標準で付属するヘッダーを使用します。2 番目のバイナリ (my_toolchain_prog と呼びます) は、すべて同じビルド ツールの異なるバージョンを持つツールチェーンのビルド ツールを使用します。

my_toolchain_prog がツールチェーンのヘッダー/ライブラリを使用して正しくコンパイルされ、ビルド マシンのローカルにあるものではないことを確認するにはどうすればよいですか?

ツールチェーンの目的は、特定の Linux バージョンのコードをクロス コンパイルすることです。

4

1 に答える 1

1

デバッグ情報を使用してビルドされた場合my_toolchain_prog、使用したヘッダーへのパスが含まれている可能性がありますが、デバッグ情報がない場合、コンパイルされたコードから使用されたヘッダーを見つける方法はありません。

これを実行ldd my_toolchain_progすると、共有ライブラリの依存関係が表示libstdc++.soされ、リンクされたバイナリのバージョンが表示される場合があります。これは通常、どのツールチェーンでビルドされたかを示します (たとえば、古い GCC でビルドしてリンクするようにオーバーライドすることができます)。新しいライブラリからライブラリに移動しますが、それは珍しいことです)

于 2013-05-17T23:45:01.683 に答える