【发布时间】:2011-05-05 21:20:31
【问题描述】:
我正在构建一个安装高级堆栈的东西,为此,我需要安装较低级别的东西。
查找是否安装了 Java 的最简单方法是在 shell 脚本中输出 which java 并检查它是否可以找到它。我现在已经到了需要做一些没有明显二进制文件的库的地步——例如,基本上是 C.libxml 中的include。
总的来说,我对 C 语言非常陌生,所以这对我来说有点棘手。 :) 理想情况下,我可以制作一个调用 #include <xxxx> 的小 C 应用程序的 shell 脚本,其中 xxxx 是我正在检查存在的库。如果找不到,则会出错。当然,不幸的是,所有这些都发生在编译之前,所以它不像我想要的那样动态。
我在一个可能没有安装任何东西(无论是高级语言或包管理器还是你有什么)的系统上执行此操作,所以我正在寻找更多的基本 shell 脚本方式做事(或者可能是一些聪明的 C 或命令行 gcc 选项)。或者也许只是手动搜索 gcc 无论如何都会寻找的包含路径/usr/local/include、/usr/include 等)。有什么想法吗?
【问题讨论】:
-
您是否要:1) 在编译时确定库 (.so) 存在,2) 在编译时确定头文件存在 (.h),3) 在运行时确定是否存在库,或者 4) 在运行时确定标头存在?还是别的什么?
-
另外,您的目标操作系统是什么?您对 which 的使用暗示了某种形式的 *NIX。
-
查找依赖关系的有用工具是
ldd。用法:ldd file,文件可以是可执行文件或共享库。 -
以“最安全”为准。就像我说的,我通常呆在我的安全和书呆子的高级语言世界中,所以我愿意接受建议。 :) 从我的角度来看,我只想知道“是的,libxml2 已安装在系统上”,有效。还 - 针对 *nix,多种口味。
标签: c shell dependencies package