Pregunta

Traté de construir un programa simple en la terminal.

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

Ejecuté g ++ -o test 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.

¿Fue útil?

Solución 3

Solución: Mi camino estaba vacío debido a algunos intentos anteriores de hacer que funcione. Creé una ruta limpia usando:

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

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

export PATH: $PATH:./

Otros consejos

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

Los mensajes de error parecen errores C. 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 extraños. A veces las personas configuran GCC como alias para G ++ incorrectamente.

tom@flim:~$ set | grep g++

tom@flim:~$ alias grep
alias grep='grep --color=auto'

tom@flim:~$ alias g++
bash: alias: g++: not found

tom@flim:~$ which g++
/usr/bin/g++

tom@flim:~$ ll `which g++`
lrwxrwxrwx 1 root root 7 2011-08-14 02:17 /usr/bin/g++ -> g++-4.6*

tom@flim:~$ 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 configuro mi entorno de desarrollo en Ubuntu:

sudo apt-get install build-essential

Esto establece todas las bibliotecas C ++ estándar sin necesidad de conocer los detalles arenosos de Knitty.

Estaba teniendo un problema muy similar a esto. En mi caso, el problema era que tenía algunos archivos de encabezado corruptos como se demuestra al tratar de verlos:

/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í era purgar estos archivos y luego volver a instalarlos.

sudo apt-get purge libc6-dev
sudo apt-get install libc6-dev
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top