Centos

在 CentOS 中配置 FFmpeg 時出錯:分段錯誤 & gcc 無法創建執行檔

  • June 7, 2017

我正在嘗試從原始碼在 CentOS 中編譯 FFmpeg。我一步一步參考了 CentOS 的官方編譯指南(https://trac.ffmpeg.org/wiki/CompilationGuide/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對應。

事實證明(出於未知的原因)放置在/tmp系統中的任何執行檔都會出現段錯誤。甚至cp /bin/ls /tmp && cd /tmp && ./ls給出了一個ls段錯誤。但是,如果移動到您的主目錄,那麼它可以工作。

那是破壞配置;明顯的解決方法是創建主目錄的子目錄並將 TMPDIR 設置為該目錄。

引用自:https://unix.stackexchange.com/questions/369760