Ligeira alteração no comando para compilar o programa C ++ causa erro

1

Esta manhã, eu estava tentando compilar um programa em C ++ usando o seguinte comando na linha de comando

g++ -o foo.cpp foo

Eu gasto cerca de uma hora tentando resolver porque eu continuava recebendo referências indefinidas & erro de múltipla definição até que percebi que meu comando para compilar estava errado e deveria ser

g++ foo.cpp -o foo

Estou apenas imaginando qual é a diferença no processo entre g++ -o foo.cpp foo e g++ foo.cpp -o foo .

Por que colocar o -o infront causa erro de compilação

    
por Computernerd 20.02.2014 / 15:29

2 respostas

3

Porque -o especifica o outfile. O primeiro significa que o outfile seria 'foo.cpp', enquanto o segundo significa que seu outfile será 'foo'.

A sintaxe do g ++ é:

gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-pedantic] [-Idir...] [-Ldir...] [-Dmacro[=defn]...] [-Umacro] [-foption...] [-mmachine-option...] [-o outfile] [@file] infile...

Página man relevante: link

    
por 20.02.2014 / 15:38
1

O comutador -o recebe um argumento. No seu caso, você estava dizendo g++ para enviar a compilação resultante para o arquivo foo.cpp . Não é isso que você quer.

$ g++ -o foo.cpp foo

Você deseja produzir a compilação resultante do arquivo de origem ( foo.cpp ) para o arquivo binário foo .

$ g++ foo.cpp -o foo

excerto da página de manual do g ++

-o <file>                Place the output into <file>
    
por 20.02.2014 / 15:39