作为我上一篇文章的后续问题,是否有任何简单的方法来判断给定的C库是否安装在给定的机器上(不是以编程方式,只是一次性的事情)?我需要使用libuuid,但我不确定它是否安装在有问题的机器上.我能想到的唯一两种方法是:
1)尝试在那里编译代码(比我想做的工作多)
2)尝试像"man libuuid"这样的东西虽然看起来如果由于某种原因手册没有安装,这并不总是可靠的.
还有更好的其他方式吗?
最简单的方法是ld
使用该-l
选项调用.这将有效地测试库的存在,自动搜索标准库位置:
$ ld -luuid
ld: warning: cannot find entry symbol _start; not setting start address
$ echo $?
0
$ ld -luuidblah
ld: cannot find -luuidblah
$ echo $?
1
# so...
$ ld -luuid 2>/dev/null && echo "libuuid exists" || echo "libuuid not found"
Run Code Online (Sandbox Code Playgroud)
编辑
正如dreamlax指出的那样,这并不适用于所有unix变体.我不知道它是否适用于所有unix(我已经测试过linux和OpenBSD),但你可以试试这个:
$ echo "int main(){}" | gcc -o /dev/null -x c - -luuid 2>/dev/null
$ echo $?
0
$ echo "int main(){}" | gcc -o /dev/null -x c - -luuidblah 2>/dev/null
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)