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をそのサブディレクトリに設定することです。

関連情報