假设使用pkg-config
我可以找到需要哪些链接标志将库添加到我的代码中,假设如果我需要添加 cairo 库,我可以-l
通过以下方式找到适当的标志
> pkg-config --libs cairo
> -lcairo
如何找到相反的内容(即链接标志 --> 库名称)?假设我想知道通过调用标志将添加哪个库-lm
,我该怎么做?
答案1
假设我想知道通过调用 -lm 标志将添加哪个库,我该怎么做?
后面的部分-l
是库的名称。它的二进制文件以 为前缀lib
,因此您可以通过该名称找到它们;
> whereis libm
libm: /usr/lib64/libm.a /usr/lib64/libm.so
> whereis libcairo
libcairo: /usr/lib64/libcairo.so
ETC。
如果whereis
没有说明任何内容,您还可以尝试 grep 的输出ldconfig -p
(请参阅man ldconfig
):
> ldconfig -p | grep "libm.so"
libm.so.6 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libm.so.6
libm.so.6 (libc6, OS ABI: Linux 2.6.32) => /lib/libm.so.6
libm.so (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libm.so
请注意,在这种情况下,我在“libm”后面附加了“.so”,这不是必需的,但它可以保存与“libmfoo ...”、“libmbar ...”等的匹配。因为-l
指的是链接共享对象( .so
)图书馆,这应该是非常万无一失的。