O que esse comando do Linux faz?

3
g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something

Isso é do site do Apache Thrift.

Além disso, o -I / usr deveria ser -I / usr?

    
por algorithmicCoder 24.05.2011 / 02:50

2 respostas

8

Aqui está um detalhamento do comando. Primeiro o comando original, para referência

g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something

Agora, para o detalhamento.

g++

Este é o comando de comando real, g++ . É o programa que está sendo executado. Aqui está o que é, na página man:

gcc - GNU project C and C++ compiler

Este é um compilador para programas escritos em C ++ e C. Ele pega o código C ou C ++ e o transforma em um programa, basicamente.

-Wall

Esta parte faz com que exiba todos os avisos durante a compilação. (Avisar tudo)

-I/usr/local/include/thrift

Esta parte diz g++ para usar /usr/local/include/thrift como o diretório para obter os arquivos de cabeçalho. E com a pergunta sobre se colocar um espaço depois do eu ou não. Você pode fazer isso de qualquer maneira. A maneira como as opções (opções são coisas em um comando após - assina. -Wall e -I são opções) são analisadas permite que você coloque um espaço ou não. Depende da sua preferência pessoal.

*.cpp

Esta parte passa todos os arquivos .cpp no diretório atual para o comando g++ .

-lthrift

Isso também pode ser -l thrift . Ele diz g++ para pesquisar a biblioteca thrift ao vincular.

-o something

Isto diz que quando tudo é compilado para colocar o executável no arquivo something .

Espero que isso ajude e por favor comente se alguma coisa não está clara!

    
por 24.05.2011 / 03:05
2

Geralmente, você deve procurar a documentação de um comando em sua página man : man g++ . No caso de softwares GNU como o GCC, você encontrará mais documentação completa no formato de informações , ou em HTML na página inicial do software .

Os compiladores C (e C ++) têm uma sintaxe peculiar que não atende às convenções usuais de opções (as opções vêm antes do operando, há um espaço opcional entre uma opção e seu argumento,…). O espaço após -I é realmente opcional, mas -Wall precisa ser uma palavra.

Aqui está uma rápida visão geral desse comando (veja na documentação para detalhes):

  • g++ executa um compilador C ++
  • -Wall emite avisos sobre código suspeito ( -Wall significa apenas avisos importantes, nem todos os avisos possíveis)
  • -I/usr/local/include/thrift procura nesse diretório por arquivos de inclusão ( #include diretivas)
  • *.cpp compila esses arquivos
  • -lthrift link com esta biblioteca (isso pesquisa libthrift.a ). Observe que -l deve vir após os arquivos que você está compilando, porque -l significa "se houver algum símbolo indefinido neste ponto, procure definições na biblioteca específica"
  • -o something coloca a saída compilada e vinculada no arquivo especificado
por 24.05.2011 / 03:19