でクエリできるように、Rust ビルドで使用されている libc.so ファイルを見つけたいと考えています--version
。(一部の libcs は C マクロを介してバージョン情報を公開するためcc
、ビルド スクリプトでクレートを使用することもできます。しかし、musl のようなものはそうではありません。)
Rust バイナリまたはライブラリがリンクされるファイルを特定できます。libstd-*.so
これがホストの libclibstd.so
に対してリンクされている場合、その上で実行すると、 . しかし、ホスト システムが glibc を使用していて、ターゲット環境が musl の場合、これは機能しません (「無効な ELF ヘッダー」)。の代わりに、またはを使用できます。ただし、これらはフルパスではなく、使用するファイルのファイル名のみを表示します。そして、それは のどのディレクトリにもありません。(自分のシステムのどこにあるかは知っていますが、任意のシステムでプログラムで見つけようとしています。)ldd
libc.so
ldd
readelf -d
objdump -p
libstd.so
libc.so
libc.so
LD_LIBRARY_PATH
実行ldconfig -p
すると、ホスト システムの libc に関する情報のみが得られます。
-print-file-name=libc.so
のようなことができるように、gcc と clang に相当するrustc があれば素晴らしいでしょうrustc --target=$TARGET --print-file-name=libc.so
。
この情報を取得する方法についての他のアイデアはありますか?