Descubra as opções de compilação glibc

3

Eu quero descobrir quais opções de compilador / linker foram usadas para compilar a biblioteca GNU C Standard (glibc) ao instalar o Linux. Em particular, eu quero obter o mesmo resultado do arquivo libc.a ao compilar o glibc a partir do código-fonte em uma máquina diferente (a mesma versão do gcc, make, binutils, etc.).

Tudo o que consegui descobrir foi a versão do gcc usada com:

user@ubuntu:/$ /lib/x86_64-linux-gnu/libc.so.6 
GNU C Library (Ubuntu GLIBC 2.21-0ubuntu4) stable release version 2.21,
...
Compiled by GNU CC version 4.9.2.
...

Mas ao compilar o glibc a partir do código-fonte sem mais opções, não obtenho os mesmos resultados depois de executar o make. O arquivo libc.a auto-compilado é diferente do arquivo pré-instalado (tamanho e binário). Então, acho que há alguma otimização acontecendo. Talvez por causa das informações de depuração incluídas quando compiladas da fonte.

Construir:

user@ubuntu:~/glibc$ sudo apt-get source libc6
user@ubuntu:~/glibc/glibc-build$ sudo ../glibc-2.21/configure --prefix=/home/user/glibc/glibc-install/
...
sudo make
...

No arquivo debian / rules e na saída que encontrei, -O2 e -g são usados com o gcc.

Existe uma pergunta , que eu analisei, mas não me ajude.

Atualmente estou usando o Ubuntu 15.04, mas também preciso de outros sistemas (não Debian). Além disso, também deve funcionar com o eglibc no Ubuntu 14.04.

O objetivo final é reproduzir (compilar) cada versão do glibc usada em diferentes sistemas (eu sei que é muito) e fazer assinaturas do IDA PRO FLIRT. Então, em conclusão eu preciso da mesma saída binária pelo menos para libc.a (esse é o arquivo de onde as assinaturas são feitas). Mais leituras sobre assinaturas FLIRT aqui .

O Problema com estas Assinaturas é que cada versão diferente do compilador e cada opção do compilador podem alterar a saída do arquivo da Biblioteca e levar a uma Assinatura diferente que funcionará apenas parcialmente no binário analisado.

Eu sou novo nisso, então toda ajuda é bem vinda. Espero não ter esquecido de mencionar algo importante.

    
por BACH 25.09.2015 / 16:10

1 resposta

0

Você deve encontrar tudo o que precisa para reconstruir no pacote src.deb que corresponda a .deb package. Olhe para apt-src(8) .

    
por 25.09.2015 / 16:54