Я хочу найти файл libc.so, который используется в сборке Rust, чтобы я мог запросить его с помощью --version
. (Некоторые libc предоставляют информацию о своей версии через макросы C, поэтому альтернативой для них может быть использование контейнера cc
в скрипте сборки. Но другие, такие как musl, этого не делают.)
Я могу выяснить, с каким libstd-*.so
файлом будет связан двоичный файл или библиотека rust. Когда этот libstd.so
связан с libc узла, запуск ldd
на нем показывает, что libc.so
. Но когда хост-система использует glibc, а целевая среда — musl, это не работает («Недопустимый заголовок ELF»). Вместо ldd
я мог бы использовать readelf -d
или objdump -p
на libstd.so
. Но они показывают только имя файла libc.so
, который он использует, а не полный путь. И этого libc.so
нет ни в одном из каталогов в LD_LIBRARY_PATH
. (Я знаю, где он находится в моих собственных системах, но я пытаюсь найти его программно в произвольных системах.)
Запуск ldconfig -p
дает мне информацию только о libc для хост-системы.
Было бы здорово, если бы существовал rustc-эквивалент gcc и clang -print-file-name=libc.so
, чтобы я мог сделать что-то вроде rustc --target=$TARGET --print-file-name=libc.so
.
Другие идеи о том, как я мог бы получить эту информацию?