【问题标题】:Problem with configure script配置脚本的问题
【发布时间】:2011-06-02 16:26:36
【问题描述】:

我在使用 ffmpeg 的 ./configure 脚本时遇到问题。我的linux环境使用busybox,它只允许有限的linux命令集。在 ffmpeg ./configure 脚本中使用的一个命令是 mktemp -u,这里的问题是 linux 的busybox 无法识别 -u 开关为有效,因此它会抱怨它并中断配置过程。

这是./configure 中的相关代码,它使用mktemp -u 命令:

if ! check_cmd type mktemp; then
    # simple replacement for missing mktemp
    # NOT SAFE FOR GENERAL USE
    mktemp(){
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
    }
fi

tmpfile(){
    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
        (set -C; exec > $tmp) 2>/dev/null ||
        die "Unable to create temporary file in $TMPDIR."
    append TMPFILES $tmp
    eval $1=$tmp
}

我根本不擅长 bash 脚本,所以我想知道是否有人知道如何强制此配置脚本不使用 mktemp -u 并使用 'replacement'根据上面的 sn-p 可用的替代选项。谢谢。

顺便说一句...简单地删除-u 开关不起作用。也不会用-t-p 替换它。我相信mktemp 必须被完全绕过。

【问题讨论】:

  • 为什么要在busybox上编译? FFMPEG 有 n 个依赖项。它将要求编译 n 个库。即使它配置成功,它也会在编译时哭泣。我的建议是使用预编译版本或根据目标需求交叉编译。
  • Busybox 可用于我正在开发的移动平台 (webos)。我试图在我的 mac 上交叉编译它,但是 gcc 失败了,说它无法创建可执行文件。我找不到任何后期版本的预编译二进制文件。我已经在谷歌上搜索了几天。任何建议,因为正如您所说,它最终在制作过程中失败了。

标签: c linux shell ffmpeg busybox


【解决方案1】:

改变这个:

if ! check_cmd type mktemp; then
    # simple replacement for missing mktemp
    # NOT SAFE FOR GENERAL USE
    mktemp(){
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
    }
fi

到这里:

#if ! check_cmd type mktemp; then
if true; then # Force the use of mktemp()
    # simple replacement for missing mktemp
    # NOT SAFE FOR GENERAL USE
    mktemp(){
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
    }
fi

您也可以删除整个 if fi 构造,以便剩下的只是 mktemp() 定义,但我宁愿将它们保留下来,以便记住需要做什么,以备不时之需回去。

【讨论】:

  • 您的解决方案让我摆脱了 mktemp 困境。谢谢。
【解决方案2】:

我只需更改配置脚本以将 -u 选项删除到 mktemp 并删除 set -C; (设置无破坏模式,并要求文件不存在;删除-u 表示您也需要删除 set -C

mktemp(1) 的 MacOS X 手册页说:

-u 在“不安全”模式下运行。在 mktemp 退出之前,临时文件将被取消链接。这比 mktemp(3) 稍微好一点,但仍然引入了竞争条件。用于 不鼓励使用此选项。

生成的文件名被mktemp取消链接,然后立即通过configure脚本重新创建,这有点傻。删除 -u 意味着文件名已经存在,并且已安全创建。

如果您将经常使用该软件,请将问题报告给该软件的开发人员或维护人员。

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 2016-06-25
    • 2016-10-11
    • 2015-02-17
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2023-01-12
    相关资源
    最近更新 更多