2012-02-15 17 views
5

Intenté construir un programa simple en la terminal.No se puede compilar el programa simple de C++ en Ubuntu

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
     printf("TESTING"); 
     return 1; 
} 

me corrieron g ++ -o prueba test.cpp

Los errores:

/usr/include/features.h:323:26: error: bits/predefs.h: No such file or directory 
/usr/include/features.h:356:25: error: sys/cdefs.h: No such file or directory 
/usr/include/features.h:388:23: error: gnu/stubs.h: No such file or directory 
In file included from test.cpp:2: 
/usr/include/stdlib.h:42:29: error: bits/waitflags.h: No such file or directory 
/usr/include/stdlib.h:43:30: error: bits/waitstatus.h: No such file or directory 
/usr/include/stdlib.h:320:49: error: sys/types.h: No such file or directory 
In file included from test.cpp:2: 
/usr/include/stdlib.h:35: error: ‘__BEGIN_DECLS’ does not name a type 
/usr/include/stdlib.h:102: error: expected constructor, destructor, or type conversion before ‘;’ token 
/usr/include/stdlib.h:113: error: ‘__END_NAMESPACE_STD’ does not name a type 
/usr/include/stdlib.h:122: error: expected constructor, destructor, or type conversion before ‘;’ token 
/usr/include/stdlib.h:140: error: expected constructor, destructor, or type conversion before ‘extern’ 
/usr/include/stdlib.h:145: error: expected constructor, destructor, or type conversion before ‘extern’ 
/usr/include/stdlib.h:149: error: expected initializer before ‘__THROW’ 
/usr/include/stdlib.h:152: error: expected initializer before ‘__THROW’ 
/usr/include/stdlib.h:153: error: ‘__END_NAMESPACE_STD’ does not name a type 
/usr/include/stdlib.h:160: error: ‘__END_NAMESPACE_C99’ does not name a type 
/usr/include/stdlib.h:168: error: ‘__END_NAMESPACE_STD’ does not name a type 

La lista continúa de esta manera. Espero que alguien pueda señalar lo que no he hecho para que esto funcione.

+0

¿Qué le dice 'g ++ --verbose -o test test.cpp'? – genpfault

+1

ver si http://ubuntuforums.org/showthread.php?t=1877944 ayuda –

+0

Puede que haya solucionado el problema. Revisé la salida detallada y decidí simplificar la ruta. Lo cambié a solo /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin El programa se compila ahora, pero no muestra nada cuando se ejecuta . ¿Eso es normal? –

Respuesta

2

SOLUCIÓN: Mi camino estaba vacío debido a algunos intentos previos de hacerlo funcionar. Creé un camino limpio usando:

export PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

Mi problema después de la compilación era que el programa no mostraría ningún resultado. Esto se debió al hecho de que como nuevo usuario de Linux no me di cuenta de que necesitaba llamar a un programa con ./ en el frente. Esto se puede establecer en la ruta también llamando al:

export PATH: $PATH:./ 
+1

[Tener '.' en tu RUTA puede ser bastante peligroso.] (Https: //unix.stackexchange.com/questions/65700/is-it-safe-to-add-to-my-path-how-come) –

4

Su código funciona para mí con la misma plataforma.

Los mensajes de error se parecen a C errores. Quizás usar los encabezados C++ ayudará.

#include <cstdio> 
#include <cstdlib> 

int main(int argc, char *argv[]) { 
    printf("TESTING"); 
    return 0; 
} 

También puede tener algunos alias raros. A veces las personas configuran gcc como un alias para g ++ incorrectamente.

[email protected]:~$ set | grep g++ 

[email protected]:~$ alias grep 
alias grep='grep --color=auto' 

[email protected]:~$ alias g++ 
bash: alias: g++: not found 

[email protected]:~$ which g++ 
/usr/bin/g++ 

[email protected]:~$ ll `which g++` 
lrwxrwxrwx 1 root root 7 2011-08-14 02:17 /usr/bin/g++ -> g++-4.6* 

[email protected]:~$ g++ --version 
g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1 
Copyright (C) 2011 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

Así es como puedo configurar mi entorno de desarrollo de Ubuntu:

sudo apt-get install build-essential 

Esto configura todas las bibliotecas estándar de C++ sin necesidad de conocer los detalles knitty arenoso.

+0

Gracias, lo descubrí aunque –

3

Estaba teniendo un problema muy similar a esto. En mi caso el problema era que tenía algunos archivos de cabecera corruptos como lo demuestra tratando de verlas:

/usr/include/x86_64-linux-gnu/sys$ cat * | grep "Input/outpu error" 
cat: ioctl.h: Input/output error 
cat: types.h: Input/output error 

La solución para mí fue para purgar estos archivos y volver a instalarlos.

sudo apt-get purge libc6-dev 
sudo apt-get install libc6-dev 
+1

También puede reinstalar paquetes usando 'aptitude reinstall'. – tmandry

+1

Si alguien no tiene 'aptitude' instalado:' sudo apt-get install --reinstall libc6-dev' también funciona. – ElmoVanKielmo

+0

apt-get purge eliminó todo lo que había instalado anteriormente. Pasando por el problema de tener que volver a instalarlos todos. – user3124361

Cuestiones relacionadas