erro ao compilar ffmpeg: gcc é incapaz de criar um arquivo executável

5

Quando executo o comando ./configure no diretório de origem ffmpeg, recebo este erro:

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.

no config.log:

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.

O que há de errado? O que devo fazer?

    
por Omid 03.09.2012 / 22:03

3 respostas

2

Sua instalação da libc está incompleta ou quebrada de alguma forma. Você deve dizer qual SO você usa ... a correção mais fácil é provavelmente reinstalar os pacotes que compõem a libc.

Ou se você estiver realmente interessado em descobrir exatamente qual parte dele está quebrada, veja algumas dicas:

Em uma instalação típica da glibc, as referências a __libc_csu_init e __libc_csu_fini serão resolvidas encontrando-as em /usr/lib/libc_nonshared.a , que você pode verificar da seguinte forma:

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

O uso de /usr/lib/libc_nonshared.a será acionado ao vincular a /usr/lib/libc.so (que é um arquivo de texto, não um objeto compartilhado real). Você pode verificar isso assim:

Pode haver outras coisas também. Você pode verificar isso com

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

/usr/lib/libc.so será usado pelo vinculador para satisfazer o requisito -lc , que você pode verificar assim:

$ 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
    
por 03.09.2012 / 22:54
5

Isso significa que você não tem o software necessário para compilar o código C.

Execute isto:

apt-get install build-essential

Você também quer as dependências de compilação para o ffmpeg:

apt-get build-dep ffmpeg

Em seguida, tente novamente.

    
por 04.09.2012 / 11:45
0

Se você pode receber um erro ao instalar o FFMPEG no centOS 6.5,

crie repo: /etc/yum.repos.d/dag.repo

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

adicione linhas abaixo,

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

Chave GPG para o DAG, execute o comando abaixo,

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

Agora atualize e instale o ffmpeg,

# yum update
# yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc
    
por 21.07.2015 / 12:16