Я использую Eclipse CDT (Eclipse v. 4.2) на Ubuntu 12.04. Когда я создаю проект C++ (в разделе Тип проекта -> Исполняемый файл -> Проект Hello World C++) и выбираю цепочку инструментов Linux GCC, стандартное приложение hello world компилируется и работает нормально. Когда я пытаюсь создать пустой проект (из того же меню, что и раньше), выбирая также цепочку инструментов Linux GCC, это приводит к нескольким ошибкам сборки:
make:***[tst] Error 1
Symbol 'cout' could not be resolved
Symbol 'endl' could not be resolved
Symbol 'std' could not be resolved
undefined reference to 'main'
Когда я сравниваю настройки пути («Свойства» -> «Сборка C/C++» и «Общие сведения C/C++») для файла .cpp, сгенерированного «Проектом Hello World C++», и для файла .cpp, добавленного в «Пустой проект», у них есть те же конфигурации и настройки, поэтому я не уверен, почему пустой проект не обнаруживает стандартную библиотеку и не компилируется. Все файлы в папке include также одинаковы. Это также происходит при установке Windows 7 (компилятор MingW) и при установке MacOS X. На данный момент я могу просто создавать свои проекты как «проект Hello World C++», избавляться от текста и кодировать то, что я хочу, но мне действительно любопытно, как настроить его с нуля, тем более что я понимаю, что создание «пустого проекта» в папке «Исполняемый файл» (в отличие от создания проекта Makefile) должно включать make-файл и все необходимые пути (если выбран правильный набор инструментов?).
Фактическая ошибка сборки из консоли CDT:
20:49:26 **** Incremental Build of configuration Debug for project tst ****
make all
Building target: tst
Invoking: GCC C++ Linker
g++ -o "tst" ./src/test.o
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [tst] Error 1
20:49:26 Build Finished (took 62ms)
Код, который я пытаюсь запустить, - это просто код приветствия по умолчанию, созданный eclipse:
#include <iostream>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
Заранее спасибо.