Por que o “uname gcc” não funciona no Ubuntu

0

Eu sei que uname -a mostra o nome completo da máquina e detalhes, etc. Mas eu usei uname gcc para ver qual versão do gcc estou executando e ele retornou Linux - O que isso significa ?

Ubuntu86: $ uname gcc
Linux

Esta é a máquina em que estou (sei que é antiga):

Ubuntu86: $ uname -a
Linux ubuntu86 2.6.8.1-3-386 #1 Tue Oct 12 12:41:57 BST 2004 i686 GNU/Linux

Como posso verificar a versão do gcc em execução nesta máquina?

Eu instalei digitando:

Ubuntu86: $ sudo apt-get install gcc

Então eu sei que ele instalou uma versão do gcc, mas não tem idéia de qual versão.

    
por Kevdog777 27.11.2013 / 10:21

4 respostas

5

E para a primeira pergunta: uname , quando não for aprovada, é equivalente a uname -s , exibindo Linux em seu sistema.

O argumento gcc passado não é uma opção (não inicia com um hífen), portanto é simplesmente ignorado pelo comando.

    
por 27.11.2013 / 10:31
4

uname mostra o nome do sistema operacional no qual você está trabalhando - apenas ignorou o argumento e fez seu trabalho habitual. Não exibe versões do software instalado.

A maioria dos comandos, incluindo o argumento gcc support --version , portanto, gcc --version exibe sua versão atual do GCC.

    
por 27.11.2013 / 10:28
2

Para a segunda pergunta, a resposta é: gcc -v
Na última linha da impressão você pode encontrar a versão de gcc instalada em seu sistema.

    
por 27.11.2013 / 10:25
2

Nos sistemas baseados em Debian, incluindo o Ubuntu, você pode descobrir o status da instalação, bem como a versão possivelmente instalada de um pacote (se souber o nome do pacote) usando dpkg -l (que é ell, não eu ou um) . Fazer isso geralmente não requer acesso root, pois é uma operação somente leitura.

Para descobrir qual pacote possui um arquivo específico, use dpkg -S . Novamente, isso não requer acesso root.

Colocando os dois juntos, você recebe algo como:

$ dpkg -S $(which gcc)
gcc: /usr/bin/gcc
$ dpkg -l gcc
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version       Architecture  Description
+++-=================-=============-=============-=======================================
ii  gcc               4:4.7.2-1     amd64         GNU C compiler
$

que informa que no meu sistema em particular, a versão do pacote 4:4.7.2-1 do pacote gcc para a arquitetura amd64 está totalmente instalada e configurada ( ii status).

Se você quiser um único comando, ele será dpkg -l $(dpkg -S $(which gcc) | awk -F: '{print $1}') , que mostrará a mesma saída que o exemplo de comando dpkg -l gcc acima. Aqui eu uso o awk para dividir os dados em : e retornar a primeira parte da saída.

Observe que a versão do pacote não reflete exatamente a versão que o próprio programa relata. No meu caso, gcc --version diz que é gcc (Debian 4.7.2-5) 4.7.2 que para todos os fins práticos é "próximo o suficiente", mas pode fazer diferença se você está tentando descobrir que um comportamento que você está vendo é um bug ou não. / p>

Ainda mais em geral, você não deve passar parâmetros aleatórios para programas e esperar que as coisas funcionem (para alguma definição de "trabalho"). No caso específico de uname , é inofensivo, mas pode facilmente fazer com que os programas executem operações que você realmente não deseja fazer; alguns até potencialmente perigosos. Verifique a página do manual do comando em questão para ver quais parâmetros ele aceita e o que eles significam. (Muitos também fazem algo razoavelmente seguro quando invocado simplesmente com o nome do binário sem parâmetros. Muitos aplicativos de console exibirão informações de versão e copyright quando lançados sem parâmetros, embora existam muitos que fazem as coisas de maneira diferente.)

    
por 27.11.2013 / 14:30

Tags