CentOS에서 FFmpeg를 구성하는 중 오류 발생: 분할 오류 및 gcc에서 실행 파일을 생성할 수 없습니다.

CentOS에서 FFmpeg를 구성하는 중 오류 발생: 분할 오류 및 gcc에서 실행 파일을 생성할 수 없습니다.

소스에서 CentOS의 FFmpeg를 컴파일하려고 합니다. 공식 컴파일 가이드(https://trac.ffmpeg.org/wiki/CompilationGuide/Centos) 나열된 종속성이 설치된 CentOS 단계별 설치의 경우. 하지만 FFmpeg를 구성하려고 할 때 다음과 같은 문제가 발생했습니다.

여기에 이미지 설명을 입력하세요.

파일의 오류 줄(1249~1270)은 다음 configure과 같습니다.

check_exec(){
    check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
}

check_exec_crash(){
    log check_exec_crash "$@"
    code=$(cat)

    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
    # are safe but may not be available everywhere.  Thus we use
    # raise(SIGTERM) instead.  The check is run in a subshell so we
    # can redirect the "Terminated" message from the shell.  SIGBUS
    # is not defined by standard C so it is used conditionally.

    (check_exec "$@") >> $logfile 2>&1 <<EOF

config.log는 다음을 보여줍니다:

zscale_filter=yes
zscale_filter_deps=libzimg
mktemp -u XXXXXX
Ubjjqz
check_ld cc
check_cc
BEGIN /tmp/ffconf.rgbbriKe.c
    1   int main(void){ return 0; }
END /tmp/ffconf.rgbbriKe.c
gcc -I/home/vis/guangli/local/include -c -o /tmp/ffconf.LLalSg6X.o /tmp/ffconf.rgbbriKe.c
gcc -L/home/vis/guangli/local/lib -ldl -o /tmp/ffconf.G3SYKa9M /tmp/ffconf.LLalSg6X.o
C compiler test failed.

내 운영 체제는 CentOS x86_64이고 시스템에 설치된 gcc는 gcc-4.4.6이지만 gcc-4.8.2로 FFmpeg를 컴파일하기 위해 GCC482_HOME/{bin,include}그에 따라 환경 변수를 추가합니다.PATH, C_INCLUDE_PATH

답변1

(알 수 없는 이유로) /tmp시스템에 있는 모든 실행 파일은 세그먼트 오류가 발생하는 것으로 나타났습니다. 심지어 세그폴트도 cp /bin/ls /tmp && cd /tmp && ./ls주었습니다 ls. 그러나 홈 디렉토리로 이동하면 작동합니다.

그러면 구성이 중단됩니다. 확실한 해결책은 홈 디렉토리의 하위 디렉토리를 만들고 TMPDIR을 해당 하위 디렉토리로 설정하는 것입니다.

관련 정보