2010-01-25 30 views
5

Sto provando a compilare una semplice funzione ciao mondo in C++. Dopo averlo compilato, lo eseguo e ottengo "Errore di segmentazione". Qualcuno può fare luce su questo?Perché sto ricevendo un errore di segmentazione?

sto compilando questo dalla riga di comando di Linux utilizzando il seguente comando:

g ++ hello.cpp

#include <iostream> 

using namespace std; 

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

Perché è contrassegnato come C#? –

+0

Probabilmente il mio errore. Non abbastanza vicino al C#? – Jim

+0

Tag modificati ....... :-) –

risposta

0

Questo potrebbe essere un longshot, ma cercare di cambiare int main()-int main(int argc, char *argv[])

+0

Ciao Viktor, ci ho provato e l'ho compilato senza incidenti. L'ho eseguito e ho ottenuto lo stesso risultato esatto. errore di segmentazione. – Jim

6

Il programma stesso sembra OK. Direi che c'è qualche stranezza nell'ambiente di compilazione che sta causando il segfault.

La soluzione migliore è eseguire questo nel debugger (gdb) - che ti dirà dove si è verificato il crash, che ti aiuterà a capire qual è il problema.

A tale scopo, compilare in questo modo:

g++ -g -o hello hello.cpp 

quindi eseguire gdb:

gdb hello 

e al gdb prompt

run 

per eseguire il programma. Quando si blocca, tipo

bt 

che vi darà una stacktrace che - si spera - aiutare a capire cosa sta succedendo.

+0

Martin, ho eseguito la prima riga e non ho mai avuto l'opportunità di inserire qualcos'altro; l'app soddisfa semplicemente il file esterno. – Jim

+0

@ Jim: Cos'è "l'app"? Cos'è "il file esterno"? –

+0

Mi dispiace Alok. L'app è la piccola "applicazione" del mondo ciao e il file esterno è il file che è stato compilato e denominato a.out. – Jim

1

Non c'è niente di sbagliato in quel codice, quindi dovrai investigare prima il tuo compilatore, poi il tuo hardware.

+0

Grazie. Questo sembra essere il consenso, ma non ho idea di come risolvere a livello di server. – Jim

1

compilarlo come questo

g ++ -Bstatic hello.cpp -static

e quindi eseguire ./a.out

Se questo non è colpa seg, LD_LIBRARY_PATH è la vostra colpevole.

+0

+1 per l'approccio '-static'. Tuttavia non credo che abbia a che fare con LD_LIBRARY_PATH. Penso che ci sia qualcosa di sbagliato nell'installazione di g ++. –

Problemi correlati