2010-11-05 64 views
2

我正在构建一个安装高级堆栈的东西,为此,我需要安装较低级别的东西。如何最好地检查C库依赖项?

查找是否安装了Java的最简单方法是在shell脚本中剔除which java并检查它是否可以找到它。例如,我现在到了需要做一些没有明显二进制文件的库 - 基本上来自C. libxml中的include

我对C总体上非常绿,所以这对我来说有点棘手。 :)理想情况下,我可以创建一个shell脚本,调用一个调用#include <xxxx>的小应用程序,其中xxxx是我检查存在的库。如果找不到,就会出错。不幸的是,当然,所有这些都是在编译之前发生的,所以它不像我想的那样动态。

我在一个可能没有安装任何东西(不管是高级语言还是包管理器或你有什么)的系统上这样做,所以我正在寻找更多的基本shell脚本方式做事情(或者一些聪明的C或者命令行gcc选项)。或者,也许只是手动搜索gcc无论如何会寻找的包含路径/usr/local/include/usr/include等)。有什么想法吗?

+0

你想:它处理这一非常问题的一个巨大的(和离奇)框架1 )在编译时确定存在库(.so),2)在编译时确定头存在(.h),3)在运行时确定库存在,或者4)在运行时确定头存在?或者是其他东西? – 2010-11-05 23:40:14

+0

另外,你的目标操作系统是什么?您的使用表明某种形式的* NIX。 – 2010-11-05 23:40:40

+0

查找依赖项的有用工具是'ldd'。用法:'ldd file',文件可以是可执行文件或共享库。 – Lekensteyn 2010-11-05 23:42:16

回答

1

这是配置的目的(automake和autoconf的部分)

4

自动工具确实是你所需要的。 http://www.gnu.org/software/autoconf/

您还可以使用pkg-config,这将有更新的软件,利用该机制的工作: http://pkg-config.freedesktop.org/wiki/

+0

有没有什么办法可以在没有Makefile和各种碎片的情况下快速跳入它?在我最为一厢情愿的想法中,我真正想要的就是像'magic-configure-binary libxml2'这样的东西来返回系统是否可用。 – Zach 2010-11-05 23:48:51

+0

@Zach:我添加了一个关于pkg-config的注释 – 2010-11-06 00:58:30