Невозможно скомпилировать простую программу C ++ в Ubuntu
-
25-10-2019 - |
Вопрос
Я попытался создать простую программу в терминале.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("TESTING");
return 1;
}
Я запустил G ++ -O Test Test.cpp
Ошибки:
/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
Список продолжается таким образом. Я надеюсь, что кто -то сможет указать на то, что я не сделал, чтобы сделать эту работу.
Решение 3
Решение: мой путь был пуст из -за некоторых предыдущих попыток заставить его работать. Я создал чистый путь, используя:
export PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Моя проблема после компиляции заключалась в том, что программа не будет показать никаких результатов. Это было связано с тем, что, будучи новым пользователем Linux, я не понял, что мне нужно было позвонить в программу с ./ впереди. Это может быть установлено и на пути, позвонив:
export PATH: $PATH:./
Другие советы
Ваш код работает для меня с той же платформой.
Сообщения об ошибках выглядят как ошибки C. Возможно, использование заголовков C ++ поможет.
#include <cstdio>
#include <cstdlib>
int main(int argc, char *argv[]) {
printf("TESTING");
return 0;
}
У вас также могут быть некоторые странные псевдонимы. Иногда люди устанавливают GCC как псевдоним для G ++ неправильно.
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.
Вот как я настраиваю свою среду разработки в Ubuntu:
sudo apt-get install build-essential
Это устанавливает все стандартные библиотеки C ++ без необходимости знать охраняющуюся песку.
У меня была очень похожая проблема с этим. В моем случае проблема заключалась в том, что у меня были несколько поврежденных файлов заголовков, о чем свидетельствуют попытка их просмотреть:
/usr/include/x86_64-linux-gnu/sys$ cat * | grep "Input/outpu error"
cat: ioctl.h: Input/output error
cat: types.h: Input/output error
Решением для меня было очистить эти файлы, а затем переустановить их.
sudo apt-get purge libc6-dev
sudo apt-get install libc6-dev