Как найти имя файла библиотеки по имени библиотеки?

StackOverflow https://stackoverflow.com/questions/1614769

Вопрос

Как найти имя файла библиотеки по имени библиотеки?

Другими словами, когда я использую «-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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top