.o
arquivos não são executáveis.
Tente um dos seguintes procedimentos:
-
Ignore a criação do arquivo
.o
e crie o executávelg++ -Wall -std=c++11 average.cpp -o average ./average
-
Vincule o arquivo
.o
a um executávelg++ -Wall -std=c++11 -c average.cpp -o average.o g++ -Wall -std=c++11 -o average average.o ./average
Se o arquivo average
ainda não for executado, tente dar a ele permissões
chmod +x average
EDITAR (07/03/17)
Explicação
Pediram-me para explicar o que os comandos fazem, então aqui vai.
g ++
Este é o compilador que irá interpretar seu código e transformá-lo em código de máquina que sua máquina pode interpretar.
Você pode ler mais sobre isso nas man pages. Basta abrir um terminal e digitar man g++
.
-Wall
Esse sinalizador diz ao compilador para falar sobre quase todos os avisos (Wall = Avisar todos). Dê uma olhada no código abaixo.
int i = 1;
if (i > i) { ... }
Se você não colocar o sinalizador -Wall
, nenhum aviso será exibido, mas se você vir algo como o seguinte:
warning: self-comparison always evaluates to false [-Wtautological-compare]
if (i > i) {}
-std = c ++ 11
Com este sinalizador, você está dizendo ao compilador qual versão do idioma deve ser usada. Este é um tópico bastante complexo, mas em suma C ++ é uma linguagem viva, o que significa que ele muda horas extras e melhora, C ++ 11 é uma dessas mudanças e adiciona muitas melhorias . Hoje em dia você pode usar -std=c++14
e em algum momento deste ano você poderá usar -std=c++17
.
Você parece novo no C ++ então não se preocupe com todas as coisas desta versão! : D
-c
Compile sem vinculação.
Basicamente, permite a criação dos arquivos .o
(arquivos de objetos aka), que contêm um bando de dados , principalmente código compilado e informações para o compilador ligar os objetos.
Ele torna a compilação de um grande projeto mais rápida, pois quando você altera um arquivo, ele só precisa criar um arquivo de objeto e vinculá-lo aos arquivos de objeto já compilados.
-o arquivo
Tirando da página man
:
Basicamente, este sinalizador diz ao compilador onde colocar o resultado de qualquer processo que esteja fazendo (compilar / ligar /...).
Espero que esta explicação ajude! :)