我正在尝试将Ubuntu 18.04开发系统上的yuma123开源软件包交叉编译为MIPS目标,其中yuma123使用Autotools和共享库。
我使用目录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=""
或者我应该在DESTDIR=
时指定sudo make install
如下:
sudo make DESTDIR=$INSTALL_PREFIX install
我需要在上面设置什么来确保libtool
以这种方式交叉编译时正确处理共享库的$INSTALL_PREFIX
目录?
但是,如何安装到
$INSTALL_PREFIX
?我应该为
--prefix=
指定一些./configure
选项[...]
或者我应该在
DESTDIR=
[?]时指定sudo make install
你应该使用DESTDIR
作为你的用例,虽然在实践中,你有可能逃脱使用--prefix
。
--prefix
选项将预期永久安装位置的前缀传递给Autotools。在某些情况下,从它导出的这个或多个路径可能最终被合并到构建的二进制文件(RPATH,配置文件位置等)或构建的文档中。如果您使用libtool,尤其如此。如果前缀不能反映您希望文件实际存在于目标系统上的位置,那么这显然是不可取的。
另一方面,DESTDIR
正是出于您描述的目的:安装到临时区域或替代根目录中。这是包装制造商通常使用的,例如,虽然我怀疑替代的根角是最初启发设施的角度。另请注意,如果您要安装到临时区域,那么您可能不需要使用sudo
来make install
。