2010-01-25 28 views
5

Estoy intentando compilar una función hello world simple en C++. Después de compilarlo, lo ejecuto y obtengo el "Error de segmentación". ¿Alguien puede arrojar algo de luz sobre esto?¿Por qué recibo una falla de segmentación?

Estoy compilando esto desde una línea de comandos de Linux usando el siguiente comando:

g ++ hello.cpp

#include <iostream> 

using namespace std; 

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

¿Por qué está marcado C#? –

+0

Probablemente mi error. No lo suficientemente cerca de C#? – Jim

+0

Etiquetas editadas ....... :-) –

Respuesta

0

Esto podría ser una posibilidad remota, pero trate de cambiar a int main()int main(int argc, char *argv[])

+0

Hola Viktor, lo intenté y se compiló sin incidentes. Lo ejecuté y obtuve el mismo resultado exacto. Fallo de segmentación. – Jim

6

El programa se ve bien. Supongo que hay algún error en su entorno de compilación que está causando segfault.

Lo mejor que puedes hacer es ejecutar esto en el depurador (gdb), eso te indicará dónde está colgando, lo que te ayudará a descubrir cuál es el problema.

Para ello, compile la siguiente manera:

g++ -g -o hello hello.cpp 

continuación, ejecute el BGF:

gdb hello 

y al BGF tipo del aviso

run 

para ejecutar el programa. Cuando se bloquea, el tipo

bt 

el cual le dará una StackTrace que - con suerte - ayudará a averiguar lo que está pasando.

+0

Martin, corrí la primera línea y nunca tuve la oportunidad de ingresar a otra cosa; la aplicación solo cumple el archivo de salida. – Jim

+0

@Jim: ¿Qué es "la aplicación"? ¿Qué es "el archivo de salida"? –

+0

Lo siento, Alok. La aplicación es la pequeña "aplicación" de Hello World, y el archivo de salida es el archivo que se compiló y se denominó a.out. – Jim

1

No hay nada de malo en ese código, por lo que tendrá que investigar primero su compilador, luego su hardware.

+0

Gracias. Este parece ser el consenso, pero no tengo idea de cómo solucionar problemas en el nivel del servidor. – Jim

1

compilarlo como esto

g ++ -Bstatic hello.cpp -static

y luego ejecutar ./a.out

Si esto no es culpa seg, LD_LIBRARY_PATH es el culpable.

+0

+1 para el enfoque '-estático'. Sin embargo, no creo que eso tenga que ver con LD_LIBRARY_PATH. Creo que hay algo mal con la instalación de g ++. –

Cuestiones relacionadas