Почему не работает мой собственный файл библиотеки C в пути поиска ld? - PullRequest
0 голосов
/ 01 июля 2018

В настоящее время у меня есть два файла

main.c
libxxx.a

main.c ссылается на некоторые функции, определенные в исходном коде перемещаемого объектного файла в libxxx.a.

Теперь следующая команда успешно компилирует main.c и связывает его с libxxx.a:

gcc -o prog main.c libxxx.a

но если я помещу libxxx.a в один из путей поиска ld, то же каталог с libc.a,

gcc -o prog main.c

просто не работает. Кажется, что ld не может найти этот архивный файл при поиске в каталоге. Может кто-нибудь сказать мне, почему это происходит?

1 Ответ

0 голосов
/ 01 июля 2018

но если я добавлю libxxx.a в один из путей поиска lb linker, то же каталог с libc.a,

gcc -o prog main.c

просто не работает.

Это ожидаемо и желательно: вам не нужно, чтобы каждая программа, которую вы пишете, ссылалась на каждую библиотеку, установленную в пути поиска системы. То, что вы хотите:

gcc -o prog main.c -lxxx

То есть: копирование библиотеки в /usr/lib позволяет компоновщику найти ее без каких-либо дополнительных аргументов поиска, но вы все же должны сообщить компоновщику, что вы хотите скомпоновать libxxx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...