Учитывая, что имя библиотеки libqxmpp.a
и (как вы упомянули в комментарии), что она находится в обычном каталоге lib (/usr/lib
), вы можете легко определить правильные параметры:
gcc
и другие компиляторы имеют переключатель -l
, который находит библиотеку на основе имени, которое вы ей даете.По умолчанию он будет искать пути, указанные для GCC во время сборки (обычно /lib
и /usr/lib
) и любые другие, заданные для /etc/ld.so.conf
.Если вы добавите переключатель -lX
, он будет добавлен lib
к имени и по умолчанию append .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
... И работает точно так же.