В Linux, как я могу определить, ссылаюсь ли я на статическую или динамическую библиотеку? - PullRequest
14 голосов
/ 26 ноября 2010

У меня есть статическая и динамическая библиотека с одинаковыми именами: libclsocket.a и libclsocket.so. Когда я указываю, с какой библиотекой я хочу связать, я просто вводю -lclsocket в качестве библиотеки. Моя программа соответствует и работает отлично, но какую библиотеку я использую? статическая библиотека или динамическая библиотека? Я хочу дать моей подруге мою программу, и я не уверен, нужно ли мне включать библиотеки в релиз. C ++, codelite, pcLinuxOS 2010

Ответы [ 2 ]

6 голосов
/ 26 ноября 2010

Вы можете попробовать запустить ldd на исполняемом файле и посмотреть, определяется ли сопровождающий файл .so как требуется в списке зависимостей.

ldd man page - это здесь .

2 голосов
/ 26 ноября 2010

Если вы используете флаг -static, все компоненты будут статическими. И -l может включать общие библиотеки. Таким образом, указав имя файла статической библиотеки (например, с /usr/lib/libfoo.a, например, без -l с добавлением), вы получите желаемый эффект.

...