Как найти имя файла библиотеки через имя библиотеки? - PullRequest
11 голосов
/ 23 октября 2009

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

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

Спасибо Chenz

Ответы [ 2 ]

9 голосов
/ 24 октября 2009

Если вы хотите узнать, где данный 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 ) )

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

4 голосов
/ 23 октября 2009

gcc -Wl, - файл трассировки. C

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

...