Sandbox 使用gnu autoconf,有没有一种方法可以构建到沙箱中?
在这种情况下,我试图构建的是GPG。基本上,我希望所有构建输出都进入我选择的子目录,而不是安装在我的实时文件系统上 设置--prefix=path/to/my/sandbox会将一个构建的输出发送到我希望的位置,但下一个构建阶段(取决于上一个构建阶段的输出)找不到该输出 例如:Sandbox 使用gnu autoconf,有没有一种方法可以构建到沙箱中?,sandbox,autoconf,Sandbox,Autoconf,在这种情况下,我试图构建的是GPG。基本上,我希望所有构建输出都进入我选择的子目录,而不是安装在我的实时文件系统上 设置--prefix=path/to/my/sandbox会将一个构建的输出发送到我希望的位置,但下一个构建阶段(取决于上一个构建阶段的输出)找不到该输出 例如: $ cd libgpg-error-1.37 $ ./configure --prefix=/Users/falk/GpgSandbox/usr/local $ make $ make install (succes
$ 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.)
--prefix
只是告诉我们应该在哪里安装构建的东西。在进行安装之前,它基本上没有效果。因此,如果要使用非标准位置的库,则需要使用configure
script的其他选项来提供它们。尝试/configure--help
。是;我知道前缀只是重定向构建工件。我只是想知道是否有办法告诉configure在哪里搜索所需的组件。我没有意识到configure有一个--help选项。这里有一个方法,不是特定于configure
:它帮助了很多。执行摘要:设置export-CPPFLAGS='-I/Users/falk/GpgSandbox/usr/local/include'
,设置export-LDFLAGS='-L/Users/falk/GpgSandbox/usr/local/lib'
并将/Users/falk/GpgSandbox/usr/local/bin添加到您的路径中。好了,一切都很顺利。我能够用我自己构建的软件生成一个tarball,这是一个真正的安装包的次好东西。(归根结底,如果你的Mac电脑上安装了自制软件,最好直接使用它,而不是自己下载软件包,但我有自己的理由。)