Usar o compilador de C++ g++ do cygwin

Estou a tentar executar o meu primeiro " Olá Mundo!"in C++. Estou usando o Windows XP, e instalei o cygwin, no qual o compilador de C++ g++ está instalado. Escrevi um pequeno programa hello-world, e guardei-o em hello.cpp. A partir do comando eu escrevo:

G++ hello.cpp

mas eu tenho:

o 'g++' não é reconhecido como um comando interno ou externo, um programa operacional ou um ficheiro em lote.

instalei o cygwin na minha D:\programs\cygwin. Eu fiz outro diretório com meu arquivo hello-world em D:\cpp. Algo com a minha instalação ou os meus caminhos parece não estar bem, mas não consigo perceber o quê. Eu corri o arquivo exe da cygwin, e no diretório de instalação eu tenho todos os arquivos necessários, eu acho: pasta bin, lib, Cygwin.morcego, etc.

li que em caso de tal mensagem de erro devo verificar se o cygwin1.o ficheiro dll é copiado para a pasta principal do Windows. Este é o ... C:\WINDOWS directório? Já procurei lá e não tenho um ficheiro desses. Tenho cygwin1.dll na pasta bin do cygwin: D:\programs\cygwin\bin. Além disso, Como posso verificar se a pasta bin (D:\programs\cygwin\bin) é considerado no caminho de busca de comandos?

Eu acho que o programa hello-world não deve conter nenhum erro de sintaxe, eu acabei de copiá-lo. Além disso, quando escrevo

G++ - v

recebo a mesma mensagem de erro: que o comando não é reconhecido. Agradecia que alguém ... dá-me uma pista sobre o que devo ver. Obrigado.

Aqui está o código do programa hello-world:
#include <iostream>
using namespace std;

int main() {
  cout <<"Hello World!"<<endl;
  return 0;
}

instalei o g++, E agora, quando digito o g++ -v, obtenho: especificações de leitura de: \D\cygnus\cygwin-b20\H-i586-cygwin32\bin..\lib\gcc-lib\i586-cygwin32\egcs-2.91.57\specs versão gcc egcs-2.91.57 19980901 (egcs-1.1 release)

na pasta bin tenho ambos g++.exe e gcc.exe. Não percebo porque é que tenho" gcc "acima e não"g++". Não sei se isto é importante., mas recebo uma mensagem de erro quando tento compilar o programa na linha de comandos do dos:

g++ hello.cpp

Eu fico:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)

e aqui está o que eu recebo quando tento compilar o programa na concha cygwin:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
Author: GEOCHET, 2009-03-02

12 answers

Ah, pensei que o g++ está instalado quando instalo o cygwin. Então, eu deveria instalar o g++ Nesse caso, não deveria?

(e depois reiniciar)

 3
Author: user42155, 2009-03-02 17:05:43
Como as pessoas disseram, verifique o caminho. Não comece a copiar os DLLs cygwin em torno - que não é necessário, pode cauxse problemas mais tarde e não vai resolver o problema.

E quando se trata de definir a variável de localização do Windows (e outras), eu descobri que este pequeno programa é bastante útil e melhor do que encolher na aplet do painel de controlo do MS.

Edit: parece que o OP não instalou o g++ por engano - uma lição para todos nós que respondemos ao perguntar ao primeira pergunta óbvia: -)

 3
Author: , 2009-03-02 17:14:32
Estou a assumir que estás a usar a casca do Windows aqui. Se invocar o compilador de uma concha cygwin Bash, todos os caminhos devem ser definidos para si.
 2
Author: Francis Beaudet, 2009-03-02 16:24:22
Certifica-te que está no caminho ou estás a executar o comando do cmd da bash shell.
 2
Author: sfossen, 2009-03-02 16:44:52
Escrevi um tutorial sobre isso há alguns anos, o que pode ajudar:

Http://www.codeguru.com/cpp/misc/misc/compilerandpre-compiler/print.php/c8107__1/

Instalaste o g++? Não está instalado pelas configurações padrão do instalador Cygwin.

 2
Author: Daniel Earwicker, 2009-03-02 17:03:06

Tem a certeza que instalou o g++? G++ é um compilador C++, não um compilador C++. Se apenas instalou o compilador C, teria o comando gcc mas não o comando g++

 2
Author: Milan Babuškov, 2009-03-02 17:18:46

Certifica-te que eles c:\cygwin\bin está no caminho.

Espero que ajude.
 1
Author: , 2009-03-02 16:22:31

Para obter o caminho em cygwin:

echo $PATH
Isto vai levar-nos a compreender o problema.

Editar:

O próximo comando dir-nos-á onde o cygwin pensa que deve estar à procura de todos os ficheiros no windows

mount

A linha que inclui /usr/bin é a que precisamos de uma cópia.

 1
Author: RobS, 2009-03-02 16:55:26
Traz o dos shell.

Cd c:\cygwin\bin

Tipo c++ ou cpp

Ou faça um comando de directório veja o conteúdo. Procura cpp ou c++.

Se não estão lá, não descarregaste.
 1
Author: Jack BeNimble, 2009-03-02 17:10:41

Para além de adicioná-lo ao caminho (que irá corrigir o seu problema), poderá querer transferir o make e o dbg, que também estão no caminho de desenvolvimento, mas não estão assinalados por omissão. Certifique-se de selecionar "manter" como as opções de instalação geral para que ele não Re-baixar tudo.

 0
Author: Jack BeNimble, 2009-03-02 16:29:28
Como outros já mencionaram, é provavelmente um problema de caminho, então você precisa olhar para o caminho variável de ambiente. Para fazer isso, clique com o botão direito em My Computer e clique em "Propriedades". Vá para a página " Avançado "e carregue no botão" Variáveis do ambiente". A partir daqui, veja se os caminhos que você mencionou estão incluídos na variável PATH. Se não, adicione-os usando a mesma sintaxe que você vê lá para separar caminhos (eu acho que é um ponto-e-vírgula ou um ponto-vírgula entre caminhos.)

Edit: Ah, vejo que tens já fiz isso (bata meu post por meros segundos. Acho que tudo o que precisas de fazer agora é reiniciar.

 0
Author: Scottie T, 2009-03-02 17:02:46

Tente criar um novo arquivo e digitar o código você mesmo sem copiá-lo e colá-lo. Você pode ter um caráter ilegal em seu código que pode não ser visível em seu editor de escolha.

 -1
Author: , 2009-03-07 00:01:04