编译ffmpeg时出错:gcc无法创建可执行文件

编译ffmpeg时出错:gcc无法创建可执行文件

当我在 ffmpeg 源目录中运行./configure命令时,出现此错误:

gcc is unable to create an executable file. If gcc is a cross-compiler, use the --enable-cross-compile option. Only do this if you know what cross compiling means. C compiler test failed.

If you think configure made a mistake, make sure you are using the latest version from Git.  If the latest version fails, report the problem to the [email protected] mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file "config.log" produced by configure as this will help solving the problem.

在配置日志中:

check_ld cc
check_cc
BEGIN /tmp/ffconf.xECiIX7z.c
    1   int main(void){ return 0; }
END /tmp/ffconf.xECiIX7z.c
gcc -c -o /tmp/ffconf.xsCaoMWN.o /tmp/ffconf.xECiIX7z.c
gcc -o /tmp/ffconf.ApzYq7NQ /tmp/ffconf.xsCaoMWN.o
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x12): undefined reference to `__libc_csu_fini'
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x19): undefined reference to `__libc_csu_init'
collect2: ld returned 1 exit status
C compiler test failed.

怎么了?我应该怎么办?

答案1

这意味着您没有编译 C 代码所需的软件。

运行这个:

apt-get install build-essential

您还需要 ffmpeg 的构建依赖项:

apt-get build-dep ffmpeg

然后再试一次。

答案2

您的 libc 安装不完整或以某种方式损坏。您应该说明您使用的操作系统...最简单的解决方法可能是重新安装包含 libc 的软件包。

或者,如果您确实有兴趣找出到底是哪个部分损坏了,这里有一些提示:

在典型的 glibc 安装中,对__libc_csu_init和 的引用__libc_csu_fini将通过查找它们来解决,/usr/lib/libc_nonshared.a您可以在其中检查如下:

$ nm /usr/lib/libc_nonshared.a | egrep '__libc_csu_(init|fini)'
0000000000000000 T __libc_csu_fini
0000000000000010 T __libc_csu_init

的使用将通过链接到(这是一个文本文件,而不是实际的共享对象)/usr/lib/libc_nonshared.a来触发。/usr/lib/libc.so你可以这样检查:

里面可能还有一些其他的东西。你可以检查一下

$ less /usr/lib/libc.so
[...]
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a )

/usr/lib/libc.so链接器将使用它来满足-lc要求,您可以像这样检查:

$ ld --verbose -lc
[... lots of stuff ...]
opened script file /usr/lib64/libc.so
attempt to open /lib/libc.so.6 succeeded
/lib/libc.so.6
attempt to open /usr/lib/libc_nonshared.a succeeded

答案3

我知道这是一个老问题,但最近我在工作站上编译 ffmpeg 时遇到了类似症状的问题。导致问题的原因是传递了几个标志来启用 opus 和 vpx 编解码器,这似乎会影响传递到gcc.就我而言,这些库还不存在,并且./configure检测到gcc没有生成带有这些标志的可执行文件。在这种情况下,错误gcc is unable too create an executable是不够的。

答案4

如果您在 centOS 6.5 上安装 FFMPEG 时可能出现错误,

创建仓库: /etc/yum.repos.d/dag.repo

# vi  /etc/yum.repos.d/dag.repo

添加以下行到其中,

[dag]
name=DAG RPM Repository
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1

DAG 的 GPG 密钥,运行以下命令,

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

现在更新并安装 ffmpeg,

# yum update
# yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc

相关内容