2010-01-25 6 views
5

J'essaie de compiler une simple fonction de bonjour en C++. Après que je l'ai compilé, je l'ai exécuté et j'ai obtenu "Erreur de segmentation". Quelqu'un peut-il nous éclairer à ce sujet?Pourquoi ai-je une erreur de segmentation?

Je compile ce à partir d'une ligne de commande Linux en utilisant la commande suivante:

g ++ hello.cpp

#include <iostream> 

using namespace std; 

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

Pourquoi est-ce marqué C#? –

+0

Probablement mon erreur. Pas assez proche de C#? – Jim

+0

Tags modifiés ....... :-) –

Répondre

0

Cela pourrait être un Longshot, mais essayez de changer int main()-int main(int argc, char *argv[])

+0

Salut Viktor, j'ai essayé ça et ça s'est déroulé sans incident. Je l'ai couru et j'ai obtenu le même résultat exact. erreur de segmentation. – Jim

6

Le programme lui-même semble OK. Je suppose qu'il y a un peu de bizarrerie dans votre environnement de compilation qui cause le segfault. Votre meilleur pari est d'exécuter ceci dans le débogueur (gdb) - qui vous dira où il plante, ce qui vous aidera à comprendre quel est le problème.

Pour ce faire, compilez comme ceci:

g++ -g -o hello hello.cpp 

puis exécuter gdb:

gdb hello 

et à l'invite de gdb

run 

pour exécuter le programme. Quand il tombe en panne, le type

bt 

qui vous donnera un stacktrace qui - je l'espère - vous aider à comprendre ce qui se passe.

+0

Martin, j'ai couru la première ligne et je n'ai jamais eu l'occasion d'entrer autre chose; l'application ne fait que remplir le fichier. – Jim

+0

@Jim: Qu'est-ce que "l'application"? Qu'est-ce que "le fichier sortant"? –

+0

Désolé Alok. L'application est le petit hello world "application" et le fichier out est le fichier qui a été compilé et nommé a.out. – Jim

1

Il n'y a rien de mal avec ce code, vous devrez donc d'abord examiner votre compilateur, puis votre matériel.

+0

Merci. Cela semble être le consensus mais je n'ai aucune idée de la façon de résoudre les problèmes au niveau du serveur. – Jim

1

Compile comme ça

g ++ -Bstatic -static hello.cpp

puis exécutez ./a.out

Si cela ne faute seg, LD_LIBRARY_PATH est votre coupable.

+0

+1 pour l'approche '-static'. Cependant, je ne crois pas que cela a à voir avec LD_LIBRARY_PATH. Je pense qu'il y a quelque chose qui ne va pas avec l'installation de g ++. –

Questions connexes