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