【发布时间】: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