使用 autotools 为 MIPS 目标交叉编译 yuma123

cross-compile yuma123 using autotools for a MIPS target

我正在尝试将 Ubuntu 18.04 开发系统上的 yuma123 开源包交叉编译为 MIPS 目标,其中 yuma123 使用 Autotools 和共享库。

我正在使用目录 INSTALL_PREFIX=/tmp/yuma123 作为要复制到 MIPS 目标的文件的临时区域。

代码(交叉)编译和链接没有任何错误使用:

autoreconf -i -f
./configure ...
make

但是,如何安装到 $INSTALL_PREFIX

我是否应该为 ./configure 指定一些 --prefix= 选项,如下所示:

./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 目录?

However, how do I install to $INSTALL_PREFIX?

Should I specify some --prefix= options to ./configure

[...]

or should I specify DESTDIR= when I sudo make install[?]

应该 使用 DESTDIR 作为您的用例,尽管在实践中,您可以使用 --prefix.

--prefix 选项将预期的永久 安装位置的前缀传送到 Autotools。在某些情况下,此路径或从中派生的路径最终可能会被合并到内置二进制文件(RPATH、配置文件位置、etc.)或内置文档中。如果您使用的是 libtool,则尤其如此。如果前缀不能反映您打算将文件实际存放在目标系统上的位置,那显然是不可取的。

DESTDIR,另一方面,正是您描述的目的:安装到临时区域或备用根中。例如,这是封装制造商通常使用的,尽管我怀疑替代根角是最初启发该设施的那个。另请注意,如果您要安装到临时区域,那么您可能不需要使用 sudomake install.