Как найти имя файла библиотеки по имени библиотеки?
-
06-07-2019 - |
Вопрос
Как найти имя файла библиотеки по имени библиотеки?
Другими словами, когда я использую «-lc», я знаю, что это /lib/libc.so.6 (или что-то подобное). Я хочу иметь возможность ввести какую-нибудь команду, где «-lc» является входными данными, а «/lib» /libc.so.6» — это результат.Чтобы расширить эту идею, я хотел указать свой собственный путь поиска, чтобы я мог использовать этот преобразователь библиотеки для разных цепочек инструментов...Любая помощь будет потрясающей,
Спасибо, Ченц
Решение
Если вы хотите узнать, где данный GCC найдет libc.a или libc.so, сделайте следующее:
gcc --print-file-name=libc.a
gcc --print-file-name=libc.so
Причина -lc
переводится в libc.so.6
несколько сложно:для glibc, libc.so
— это скрипт компоновщика, который обычно содержит:
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.2 ) )
или что-то подобное.
Другие советы
gcc -Wl, --trace file.c
распечатает список входных файлов для ld