【问题标题】:cross-compile yuma123 using autotools for a MIPS target使用自动工具为 MIPS 目标交叉编译 yuma123
【发布时间】:2023-04-10 07:45:01
【问题描述】:

我正在尝试将 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目录?

【问题讨论】:

    标签: build cross-compiling autotools configure libtool


    【解决方案1】:

    但是,如何安装到$INSTALL_PREFIX?

    我应该指定一些--prefix= 选项到./configure

    [...]

    或者我应该在sudo make install[?] 时指定DESTDIR=[?]

    您应该在您的用例中使用DESTDIR,尽管在实践中,您有可能不使用--prefix。

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

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

    【讨论】:

    • sudo make DESTDIR=$INSTALL_PREFIX install 运行/bin/bash ../../../libtool --mode=install /usr/bin/install -c libyumamgr.la '/tmp/yuma123_install/usr/local/lib',我得到libtool: warning: relinking 'libyumamgr.la' libtool: warning: '/opt/mscc/mscc-brsdk-mips-n2e-2017.02-066/stage2/smb/x86_64-linux/usr/mipsel-buildroot-linux-gnu/sysroot/usr/lib/libxml2.la' seems to be moved libtool: error: error: relink 'libyumamgr.la' with the above command before installing it。我应该编辑*.la 文件中的libdir= 条目还是运行libtool --finish $INSTALL_PREFIX/usr/local/lib?有什么想法吗?
    • 当库安装到暂存区而不是最终目的地时,libtool 抱怨是正常的。这通常可以忽略,但需要注意的是库可能无法从该暂存区域使用。您需要将它们放在目标文件系统上的最终位置才能使用它们。这是一种“你不能吃蛋糕也不能吃”的情况。
    • 我不清楚错误出现的位置或方式;这可能是一个单独的问题。
    猜你喜欢
    • 2016-05-19
    • 2011-07-14
    • 2019-01-18
    • 1970-01-01
    • 2018-05-31
    • 2017-08-29
    • 2020-02-05
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多