Se eu executar ldd -v as
no meu sistema, obtenho:
./as: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.14' not found (required by ./as)
linux-vdso.so.1 => (0x00007fff89ab1000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1e4c81f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e4c498000)
/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f1e4ca6d000)
Então, sim, parece que esses binários estão procurando por um símbolo GLIBC_2.14
, que você presumivelmente está faltando no seu sistema. Como o svenx apontou, parece que ele está procurando pelo símbolo memcpy@@GLIBC_2.14
. Mais informações sobre por que o memcpy
recebeu uma nova versão é descrito neste relatório de bug .
A instalação de uma nova versão do glibc
em seu sistema de destino deve corrigir isso. Se você quiser tentar reconstruir o binário para continuar trabalhando na versão antiga de glibc
, você pode tentar truques como o listado aqui . Você também pode se dar bem com um shim que apenas forneça a versão específica do símbolo memcpy
que você precisa, mas isso pode ser um pouco hacky.
Depois de ler sua atualização : você está certo, não foi problema seu. Mas acho que descobri: seu binário está solicitando o intérprete /lib/ld-linux-x86-64.so.2
, que não existe nos sistemas Ubuntu 12.04:
$ readelf -a ./as | grep interpreter
[Requesting program interpreter: /lib/ld-linux-x86-64.so.2]
Enquanto ldd
sabia encontrá-lo em /lib64
, eu suponho que o kernel não sabe disso quando tenta executar o binário e não consegue encontrar o interpretador requisitado pelo arquivo. Você poderia tentar apenas executá-lo através do interpretador manualmente:
$ pwd
/home/jim/mingw64/x86_64-w64-mingw32/bin
$ ./as --version
-bash: ./as: No such file or directory
$ /lib64/ld-linux-x86-64.so.2 ./as --version
GNU assembler (rubenvb-4.7.1-1-release) 2.23.51.20120808
Copyright 2012 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of 'x86_64-w64-mingw32'.
Eu não tenho 100% de certeza de que isso está funcionando corretamente - no meu sistema, executar gcc
dessa maneira gera uma falha de segmentação. Mas isso é pelo menos um problema diferente.