我正在尝试将 Ubuntu 18.04 开发系统上的 yuma123 开源包交叉编译为 MIPS 目标,其中 yuma123 使用自动工具和共享库。
我正在使用目录INSTALL_PREFIX=/tmp/yuma123
作为要复制到 MIPS 目标的文件的暂存区域。
代码(交叉)编译和链接没有任何错误,使用:
autoreconf -i -f
./configure ...
make
但是,如何安装到$INSTALL_PREFIX
?
我是否应该指定一些--prefix=
选项来./configure
如下所示:
./configure
--target=mipsel-buildroot-linux-gnu
--host=mipsel-buildroot-linux-gnu
--build=x86_64-unknown-linux-gnu
--prefix=$INSTALL_PREFIX/usr
--sysconfdir=$INSTALL_PREFIX/etc
--localstatedir=$LOCALSTATEDIR
--program-prefix=""
或者我应该在sudo make install
时指定DESTDIR=
如下:
sudo make DESTDIR=$INSTALL_PREFIX install
我需要在上面设置什么才能确保libtool
以这种方式交叉编译时正确处理共享库的$INSTALL_PREFIX
目录?
但是,如何安装到
$INSTALL_PREFIX
?我是否应该指定一些
--prefix=
选项来./configure
[...]
还是我应该
DESTDIR=
在sudo make install
[?
您应该为您的用例使用DESTDIR
,尽管在实践中,您可以使用--prefix
.
--prefix
选项将预期的永久安装位置的前缀传达给自动工具。 在某些情况下,此路径或从其派生的路径最终可能会合并到构建的二进制文件(RPATH、配置文件位置等)或构建的文档中。 如果您使用的是libtool,则尤其如此。 如果前缀不能反映您希望文件在目标系统上实际驻留的位置,这显然是不可取的。
另一方面,DESTDIR
正是为了您描述的目的:安装到暂存区域或替代根中。 例如,这就是包构建者通常使用的,尽管我怀疑替代根角度是最初启发设施的那个。 另请注意,如果您要安装到暂存区域,则可能不需要使用sudo
来make install
。