2011-05-06 1 views
1

Я пытаюсь использовать библиотеку (http://code.google.com/p/qxmpp/), но я не могу найти имя в библиотеку, чтобы связать ее. Я хочу понять, как вы можете узнать имя библиотеки для использования в параметрах связывания.проблема привязки к linux (не могу найти имя соответствующей библиотеки)

+0

В документации библиотеки вам не сообщается? –

+0

В документации ничего не говорится о компиляции – Ayoub

ответ

2

Похоже, что это только исходный архив - в него не включены никакие двоичные файлы. Вы построили библиотеку из нее? Где это сделал процесс сборки? /usr/lib или /usr/local/lib будут обычными подозреваемыми, но прочитайте сборку и установку документации в пакете.

+0

Я установил ее через apt-get на ubuntu, и я нашел файл .a библиотеки «/usr/lib/libqxmpp.a», но ссылка на libqxmpp не работает – Ayoub

+0

Опубликовать компилировать и использовать ссылку, которую вы используете. Вы помещаете '-lqxmpp' в командной строке? – QuantumMechanic

+0

-lqxmpp работал, спасибо. это правило, чтобы назвать библиотеку с префиксом l? – Ayoub

1

Учитывая, что имя библиотеки libqxmpp.a и (как вы упоминаете в комментариях), что это в обычном Lib каталога (/usr/lib), вы можете легко вывести собственные параметры:

gcc и другие компиляторы переключатель -l, который находит библиотеку на основе имени, которое вы ему даете. По умолчанию он будет искать пути, указанные GCC во время сборки (обычно /lib и /usr/lib), а также любые другие данные, присвоенные /etc/ld.so.conf. Если добавить переключатель -lX, он перед именемlib к имени и по умолчанию добавить.so и искать любой файл, который выглядит как libX.so в любом из Lib каталогов он знает.

Работа в обратном направлении, мы можем сделать вывод, что применение gcc с -lqxmpp будет искать файл с именем libqxmpp.so (на самом деле, это выглядит несколько других имен, тоже.) Как мы получаем его искать .a файл? Эти ar зубки (man ar) являются статические библиотеки, поэтому пройти переключатель -static непосредственно перед библиотекой:

gcc -o progname your.o program.o files.o -static -lqxmpp 

(Если вам необходимо связаться с другими библиотеками, вам может понадобиться добавить -Wl,-dynamic для них, если вы не «т хочет, чтобы они статически или статический ЛИЭС не доступен)

в качестве альтернативы, вы можете это сделать, если вы знаете полный путь:.

gcc -o progname your.o program.o files.o /usr/lib/libqxmpp.a 

... И он работает точно так же.

Смежные вопросы