Centos
在 CentOS 中配置 FFmpeg 時出錯:分段錯誤 & gcc 無法創建執行檔
我正在嘗試從原始碼在 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 設置為該目錄。