2011-01-03 3 views
1

У меня возникла проблема с сценарием ./configure для ffmpeg. В моей среде linux используется busybox, что позволяет использовать только ограниченный набор команд Linux. Одна команда, которая используется в скрипте ffmpeg ./configure, - mktemp -u, проблема здесь в том, что busybox для Linux не распознает ключ -u как действительный, поэтому он жалуется на него и прерывает процесс настройки.Проблема с скриптом configure

Это соответствующий код в ./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 
} 

Я не хорошо с Баш сценариев на всех, поэтому мне было интересно, если кто-то один имел представление о том, как я могу заставить это сконфигурируйте сценарий, чтобы не использовать mktemp -u и используйте 'replacement' альтернативный вариант, доступный в соответствии с приведенным выше фрагментом. Благодарю.

btw ... просто удаление -u переключатель не работает. Также не заменяет его -t, или -p. Я считаю, что mktemp должен быть полностью обойден.

+1

Почему вы хотите скомпилировать его на busybox? FFMPEG имеет n количество зависимостей. Он попросит n количество библиотек для компиляции. даже если он будет успешно настроен, он будет плакать во время компиляции. Мое предложение - использовать предварительно скомпилированную версию или скомпилировать ее в соответствии с целевым требованием. – Alam

+0

Busybox - это то, что доступно для мобильной платформы (webos). Я для разработчиков. Я попытался скомпилировать его на своем Mac, но это не удалось с gcc, говоря, что он не может создать исполняемый файл.Я не могу найти какие-либо поздние версии предварительно скомпилированных двоичных файлов. Я работаю в течение нескольких дней. Любые предложения, потому что, как вы заявили, это в конечном итоге не удалось во время make. – cube

ответ

2

Изменить это:

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 

Вы можете альтернативно удалить весь iffi конструкции, так что то, что осталось только mktemp() определение, но я бы предпочел оставить их в как способ запомнить, что нужно сделать, и в случае, если вам нужно вернуться.

+0

Ваше решение заставило меня пройти дилемму mktemp. Спасибо. – cube

1

я бы просто изменить конфигурационный скрипт уронить -u опции Mktemp и удалить set -C; (который не устанавливает-колошматить режима, и требует файла будет отсутствовать, удаление -u означает, что вам нужно удалить set -C слишком).

В страницах MacOS X для Mktemp (1) говорят:

-u работать в режиме `` небезопасный ''. Временный файл будет отсоединен до выхода mktemp. Это немного лучше, чем mktemp (3), но все же вводит условие гонки. Использование этот параметр не рекомендуется.

Сгенерированное имя файла отключено mktemp, а затем сразу же создается скриптом configure, который является пустяком глупо. Удаление -u означает, что имя файла уже существует, созданное безопасно.

Если программное обеспечение является тем, что вы собираетесь использовать часто, сообщите об этом разработчику или разработчику программного обеспечения.

Смежные вопросы