使用 gnu autoconf,有没有办法构建到沙箱中?
Using gnu autoconf, is there a way to build into a sandbox?
在这种情况下,我要构建的是 GPG。基本上,我想让所有构建输出进入我选择的子目录,而不是安装在我的实时文件系统上。
设置 --prefix=path/to/my/sandbox 将一个构建的输出发送到我想要它去的地方,但是下一个构建阶段,这取决于输出之前的构建阶段,找不到那个输出。
示例:
$ cd libgpg-error-1.37
$ ./configure --prefix=/Users/falk/GpgSandbox/usr/local
$ make
$ make install
(success: all output placed in /Users/falk/GpgSandbox/usr/local/)
$ cd ../libassuan-2.5.3
$ ./configure --prefix=/Users/falk/GpgSandbox/usr/local
...
configure: error: libgpg-error was not found
$
我是否可以将另一个选项传递给 ./configure 以使其在沙箱中查找库?我应该在 VM 还是 docker 容器中构建?
非常感谢@hyde 为我指明了正确的方向。解决方案是在构建之前设置一些环境变量:
mkdir -p /Users/falk/GpgSandbox/usr/local/
export CPPFLAGS='-I/Users/falk/GpgSandbox/usr/local/include'
export LDFLAGS='-L/Users/falk/GpgSandbox/usr/local/lib'
export PATH="$PATH:/Users/falk/GpgSandbox/usr/local/bin"
cd libgpg-error-1.37/
./configure --prefix=/Users/falk/GpgSandbox/usr/local
make install
(etc.)
在这种情况下,我要构建的是 GPG。基本上,我想让所有构建输出进入我选择的子目录,而不是安装在我的实时文件系统上。
设置 --prefix=path/to/my/sandbox 将一个构建的输出发送到我想要它去的地方,但是下一个构建阶段,这取决于输出之前的构建阶段,找不到那个输出。
示例:
$ cd libgpg-error-1.37
$ ./configure --prefix=/Users/falk/GpgSandbox/usr/local
$ make
$ make install
(success: all output placed in /Users/falk/GpgSandbox/usr/local/)
$ cd ../libassuan-2.5.3
$ ./configure --prefix=/Users/falk/GpgSandbox/usr/local
...
configure: error: libgpg-error was not found
$
我是否可以将另一个选项传递给 ./configure 以使其在沙箱中查找库?我应该在 VM 还是 docker 容器中构建?
非常感谢@hyde 为我指明了正确的方向。解决方案是在构建之前设置一些环境变量:
mkdir -p /Users/falk/GpgSandbox/usr/local/
export CPPFLAGS='-I/Users/falk/GpgSandbox/usr/local/include'
export LDFLAGS='-L/Users/falk/GpgSandbox/usr/local/lib'
export PATH="$PATH:/Users/falk/GpgSandbox/usr/local/bin"
cd libgpg-error-1.37/
./configure --prefix=/Users/falk/GpgSandbox/usr/local
make install
(etc.)