如何找出上述标志所指的库是什么?我将如何为其他人做呢?
Gustavo Carreno
问问题
626 次
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 回答