O g ++ construirá 64 bits no sistema de 64 bits?

2

Se eu estiver usando o automake para construir uma biblioteca, se não houver nenhum sinalizador específico especificando o sistema de destino, o resultado será de acordo com o sistema no qual a compilação está acontecendo? Compilador de significado no sistema operacional de 64 bits produzirá resultado de 64 bits e 32 bits produzirá 32 bits? (Eu estou usando o compilador Fedora 16 e g ++)

    
por Nickolay Kondratyev 19.11.2012 / 22:20

3 respostas

3

Eu assumo que essa saída binária será a mesma que a arquitetura em que você está rodando .... a menos que flags para mudar este comportamento estejam presentes. Então, você pode verificar isso compilando algo e, em seguida, fazendo um comando de arquivo no binário. Isso lhe dirá se as coisas são 64 ou 32 bits.

    
por 19.11.2012 / 22:26
0

Sim, a menos que você tenha se esforçado para configurá-lo de maneira diferente, o GCC compilará a arquitetura do seu processador. (A arquitetura genérica, não sua variante específica do CPU - no seu caso, amd64 a.k.a. x86_64).

Em instalações típicas do GCC de 64 bits, passe -m32 para compilar para a arquitetura de 32 bits correspondente (por exemplo, x86 em um sistema amd64). Execute gcc --print-multi-lib para ver quais arquiteturas são suportadas.

    
por 20.11.2012 / 00:45
0

Se o projeto em particular não tiver dependências explícitas ou implícitas em bibliotecas de apenas 32 bits, então automake compilará um executável de 64 bits.

Com a abundância de sistemas de 64 bits e reimplementações de coisas que costumavam ser de 32 bits, isso não acontecerá em um sistema moderno (ou seja, após 2010, incluindo o Fedora 16)

    
por 10.12.2013 / 10:02