Разница между связыванием библиотеки с -ldl и -l - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь связать некоторые библиотеки VTK в моей программе ... и это не работает, как это -ldl /usr/lib/libvtkIO.so, как это делает CMake. Но если я скомпилирую его вручную, используя -L -lvtkIO, это сработает. В чем разница?

Является ли динамическое или статическое связывание?

Спасибо

1 Ответ

0 голосов
/ 17 апреля 2012

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

Я думаю, что вы неправильно поняли некоторые аргументы компоновщика, -lvtkIO будет ссылаться на библиотекуПуть к библиотеке с именем libvtkIO.so, -ldl будет ссылаться на библиотеку с именем libdl.so.Аргумент -L используется для добавления дополнительных путей, которые компоновщик должен искать для библиотек.

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