Как найти имя библиотеки через имя библиотеки?

Как найти имя библиотеки через имя библиотеки?

В других словах, когда я использую "-lc", я знаю, что это /lib/libc.so.6 (или что-то подобное). Я хочу иметь возможность набирать некоторую команду, где "-lc" - это вход и "/lib/libc.so.6" - это выход. Чтобы расширить эту идею дальше, я хотел указать свой собственный путь поиска, чтобы я мог использовать этот редактор для разных инструментов. Любая помощь была бы удивительной,

Спасибо Chenz

Ответ 1

Если вы хотите узнать, где данный GCC найдет libc.a или libc.so, сделайте следующее:

gcc --print-file-name=libc.a
gcc --print-file-name=libc.so

Причина -lc переводится в libc.so.6 несколько сложна: для glibc libc.so является компоновщиком script, который обычно содержит:

/* 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 ) )

или что-то подобное.

Ответ 2

gcc -Wl, - trace file.c

распечатает список входных файлов для ld