我正在尝试在安装了一组过时的autotools的机器上构建thrift
库。我没有root工作,我试图避免修改root拥有的任何文件。
我下载并构建了每个autotool的最新版本,但是当我尝试使用它们时,我遇到了一些关于其他autotools位置的硬编码假设。
例如,除了PATH
更改之外,我还必须设置变量AUTOM4TE_CFG
和autom4te_perllibdir
,以及手动修改一堆autotools相关的配置文件thrift
分发。
从生活在非标准位置的自动工具引导构建所需的工作量和性质似乎非常苛刻,特别是考虑到autotools旨在提高可移植性。
是否有记录的方法从非标准位置运行整套autotool?
答案 0 :(得分:0)
首先让我说我对节俭一无所知。也许它确实很奇怪 - 通常是自动工具的可能性,因为它们是非常开放的。
其次,据我所知,这些都没有真正记录在案。但是,这是autotools自身工作方式的合理结果。
我做在某种程度上经常从个人构建中运行autotools。我的情况并不像你那样极端,因为我能够依赖系统m4
,但基本思路是一样的。
我所做的是下载(或查看)我想要的工具版本。然后,我按顺序构建它们:autoconf
,然后automake
,然后libtool
,如果我真的认为我需要它。对于每一个,我在配置时使用相同的--prefix
选项。我将它指向一个新目录。这样,在make install
之后,所有工具都会在同一个安装树中结束。
这看起来像:
cd $src/autoconf-$version
./configure --prefix=/home/tromey/autotools
make && make install
cd ../automake-$version
./configure --prefix=/home/tromey/autotools
make && make install
... libtool if you need it
在此之后,我将$prefix/bin
添加到PATH
。然后一切都准备好了。
这里有两条皱纹。
首先,如果我处于您的情况,我会首先使用相同的方法构建m4
- 但我会在构建PATH
之前将前缀添加到autoconf
。这样autoconf
版本就会获取正确的m4
可执行文件。
其次,有时程序依赖于提供宏的.m4
文件,并由aclocal
使用。有时我需要将奇怪的符号链接到系统提供的.m4
文件或其他类似的hack来进行构建。但这种情况相对较少。