我尝试使用库(http://code.google.com/p/qxmpp/)但我找不到要将其链接到的库的名称。我想了解如何找到要在链接参数中使用的库的名称。
答案 0 :(得分:2)
看起来这只是一个源存档 - 不包含二进制文件。你从它建立了图书馆吗?构建过程在哪里? /usr/lib
或/usr/local/lib
是常见的嫌疑人,但请阅读包中的构建和安装文档。
答案 1 :(得分:1)
鉴于库的名称是libqxmpp.a
并且(正如您在评论中提到的那样)它位于通常的lib目录(/usr/lib
)中,您可以轻松推断出正确的选项:
gcc
和其他编译器有一个-l
开关,可根据您提供的名称查找库。默认情况下,它会查看在构建时(通常为/lib
和/usr/lib
)以及给予/etc/ld.so.conf
的任何其他路径的GCC路径。如果您添加了开关-lX
,它将将 lib
添加到名称中,默认情况下追加 .so
并查找任何文件在它知道的任何lib目录中看起来都像libX.so
。
向后工作,我们可以推断,使用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
......它的工作原理相同。