0

如何找出上述标志所指的库是什么?我将如何为其他人做呢?

4

3 回答 3

2

-l 选项将库的名称作为参数,因此在这种情况下,库将被命名为 libXi.a(或 libXi.so 或类似名称)。要查找库,请查看您的发行版中可用的标准库位置(/usr/lib、/lib、/usr/local/lib 等)。还可以使用链接器的 -L 选项指定其他库目录。

于 2009-03-28T17:21:05.417 回答
0

如果您的程序编译成功,或者如果您有另一个使用 的程序-lXi,那么您可以执行以下操作:

ldd /path/to/that/program | grep libXi

例如:

$ ldd /usr/X11R6/bin/audacity | grep libXi
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007f53faaba000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f53f8e2c000)

这很可能会告诉您该库在哪里。(这不是 100%,因为构建过程可能会改变搜索路径,但这对于像 X11 这样的标准库来说通常不太可能。)

从那里,你可以询问你的发行版哪个包有那个文件,如果你在乎的话。例如在 Ubuntu 或 .deb-base 发行版上:

$ dpkg --search /usr/lib/libXi.so.6
libxi6: /usr/lib/libXi.so.6

如果您不能使用 LDD,请检查您的系统/etc/ld.so.conf,这将指示运行时共享库​​链接的搜索路径。(/lib/ 并且/usr/lib默认包含在内。)

最坏的情况,你可以找到它:

find / -regex '.*libXi\.\(a\|so\).*' 2> /dev/null
于 2009-03-28T17:47:33.293 回答
0
strace -f -e open gcc ... -lXi 

在输出中查找 libXi。

于 2009-03-28T19:14:09.793 回答