5

我正在做的一个项目使用了一个非标准的分发系统,它在内部下载和编译依赖库。对于每个库,此程序都会启动脚本,该configure脚本以编译系统的内部目录为前缀。然后它运行makeand make install,然后它通过使用文件搜索安装目录来验证内容lib/<mylib>.a。这最后一步失败了。

为了了解发生了什么,我自己编译了一对随机库,包括我自己的一个。我注意到在我的发行版(openSUSE,64 位)下,安装路径不是填充/lib,而是填充/lib64

很明显,这是发行版的设置,我很确定此设置涉及发行版附带的自动工具配置。

有没有办法改变这种行为,或者作为替代方案,从系统中读取这些信息(这样我就可以修补上面提到的crock)?

谢谢你的帮助

更新:我了解了 中的--libdir标志configure,所以我想我可以解决我的问题。我仍然想知道是否有办法通过以某种方式查询分布(例如读取一些配置文件)来了解这个细节。

4

2 回答 2

5

配置脚本不应该尝试对机器做出假设,或者尝试将库安装在 ${exec_prefix}/lib 以外的位置,除非用户明确请求 $libdir 的不同位置。用户可以显式请求备用位置的一种机制是通过 config.site 文件。如果文件 ${prefix}/share/config.site 存在,它可能会为 $libdir 指定一个替代值,从而导致用户在不知不觉中明确指定替代安装位置。

于 2012-02-14T15:57:47.957 回答
3

这是威廉·珀塞尔(William Pursell)的一个很好的答案。我只是想补充一点,因为这个问题特别涉及 openSUSE,所以 openSUSE 不会安装一个名为config.site. 等效文件实际上是/usr/share/site通过site-configrpm 安装到的,然后通过/etc/profile/site.{c,}sh导出CONFIG_SITE环境变量来激活指向该文件。正如您可能已经看到的那样,该变量随后由 autoconf接受。

于 2012-12-18T20:54:11.547 回答