Неопределенная ссылка на функции при ссылке на библиотеку stati c - PullRequest
0 голосов
/ 24 апреля 2020

Я включаю в свой код библиотеку X.a stati c, а для X.a требуется библиотека a.so, поэтому мне нужно включить только код X.a или мне нужно включить обе библиотеки в мой код?

Я попытался включить в свой код только X.a, но не нашел определения функций, которые есть в a.so. Которые используются X.a.

1 Ответ

0 голосов
/ 26 апреля 2020

мне нужно включить только Xa или мне нужно включить обе библиотеки в мой код?

Вы не «включаете» библиотеки в свой код, вы ссылка их в.

Когда вы ссылаетесь на X.a, компоновщик копирует использованные части библиотеки в ваш исполняемый файл.

Когда вы ссылаетесь на a.so, компоновщик делает обратите внимание, что a.so требуется во время выполнения и (если вы используете версионные символы), какие версии символов из a.so должны присутствовать во время выполнения, но не копирует код из a.so в ваш исполняемый файл. Тем не менее, a.so все еще требуется для времени соединения.

Есть способы связать исполняемый файл без a.so, но их лучше оставить экспертам (слишком много возможных ошибок с таким подходом).

...