我正在尝试将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=""
或者在我DESTDIR=
时应指定sudo make install
,如下所示:
sudo make DESTDIR=$INSTALL_PREFIX install
我需要在上面进行哪些设置,以确保以这种方式交叉编译时,libtool
为共享库正确处理$INSTALL_PREFIX
目录?
答案 0 :(得分:0)
但是,如何安装到
$INSTALL_PREFIX
?我应该为
--prefix=
指定一些./configure
选项吗?[...]
或者我应该
DESTDIR=
[?]时指定sudo make install
您应该将DESTDIR
用于您的用例,尽管在实践中,您可能会摆脱使用--prefix
的使用。
--prefix
选项将预期的永久安装位置的前缀传达给Autotools。在某些情况下,此路径或从其派生的路径可能最终被合并到内置二进制文件(RPATH,配置文件位置, etc 。)或内置文档中。如果您使用的是libtool,则尤其如此。如果前缀不能反映文件在目标系统上的实际位置,则显然是不希望的。
DESTDIR
恰恰是您所描述的目的 :将其安装到暂存区或备用根目录中。例如,这就是包装制造商通常使用的,尽管我怀疑替代的根角是最初启发该设施的那个。还要注意,如果要安装到暂存区,则可能不需要使用sudo
至make install
。