2011-01-03 3 views
1

ffmpeg에 대한 ./configure 스크립트의 문제점이 있습니다. 내 리눅스 환경은 제한된 일련의 리눅스 명령만을 허용하는 busybox를 사용한다. ffmpeg ./configure 스크립트에서 사용되는 명령 중 하나가 mktemp -u 인 경우 linux의 busybox는 -u 스위치를 유효한 것으로 인식하지 못하므로 문제가 발생하여 configure 프로세스가 중단됩니다.구성 스크립트의 문제점

이것은 mktemp -u 명령을 사용 ./configure의 관련 코드입니다 :

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을 사용하지 않고 위의 스 니펫에 따라 대체 ' 대체'옵션을 사용하십시오. 감사.

btw ... 단순히 제거하면 -u 스위치가 작동하지 않습니다. -t 또는 -p으로 바꾸지도 않습니다. mktemp은 완전히 우회해야한다고 생각합니다.

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

이 사람 :이

+1

왜 비지 박스에서 컴파일하고 싶습니까? FFMPEG에는 n 개의 종속성이 있습니다. n 개의 라이브러리를 컴파일하도록 요청합니다. 성공적으로 구성하더라도 컴파일하는 동안 울 것입니다. 내 제안은 미리 컴파일 된 버전을 사용하거나 목표 요구 사항에 따라 교차 컴파일합니다. – Alam

+0

Busybox는 내가 개발중인 모바일 플랫폼 (webos)에서 사용할 수있는 것입니다. 내 Mac에서 그것을 교차 컴파일하려고했지만 그것은 실행 파일을 만들 수 없다는 gcc와 함께 실패했습니다.이전 버전의 바이너리를 찾을 수 없습니다. 나는 며칠 동안 인터넷 검색을 해왔다. 당신이 말했듯이, 그것은 제안하는 동안 궁극적으로 실패했습니다. – cube

답변

2

변경

#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 

어떤 남아있는 것은 단지 mktemp() 정의입니다 있도록 선택적으로 전체 iffi 구조를 제거 할 수 있지만, 나는 오히려 그들을 떠날 것 할 일이 무엇인지, 그리고 다시 돌아 가야 할 필요가있을 때를 기억하는 방법입니다.

+0

귀하의 솔루션은 나를 mktemp 딜레마에 빠지게했습니다. 고맙습니다. – cube

1

난 그냥 mktemp는-u 옵션을 드롭 configure 스크립트를 변경하고 제거하는 것이 더-소지품 모드를 설정하지 않고, 결석하는 파일이 필요합니다 set -C;합니다 (하며 -u 제거하는 것은 당신이 set -C를 제거해야 의미 너무).

적인 mktemp의 맥 OS X 매뉴얼 페이지 (1) 말 :

-u

은``안전하지 않은 ''모드로 작동합니다. 임시 파일은 mktemp가 종료되기 전에 링크 해제됩니다. 이것은 mktemp (3)보다 약간 더 좋지만 여전히 경합 조건을 도입합니다. 의 사용은 권장되지 않습니다.

생성 된 파일 이름은 mktemp에 의해 연결 해제 된 다음 사소한 바보 인 configure 스크립트에 의해 즉시 재 작성됩니다. -u을 삭제하면 안전하게 작성된 파일 이름이 이미 존재 함을 의미합니다.

소프트웨어가 자주 사용하려는 것이라면 개발자 또는 소프트웨어 유지 관리자에게 문제를보고하십시오.