Когда вы пишете команду типа g++ file_name.cpp
, вы говорите GCC скомпилировать и связать этот файл в законченную программу.Сбой, потому что этот единственный файл не является полной программой;части программы находятся в других исходных файлах.
Вы можете либо скомпилировать все сразу с помощью:
g++ file1.cpp file2.cpp -o myprog
, либо вы можете скомпилировать каждый файл по отдельности (в файл .o
) изатем свяжите их как отдельный шаг:
g++ -c file1.cpp
g++ -c file2.cpp
g++ file1.o file2.o -o myprog
Первый способ проще, если вы просто вводите команды в командной строке, но он очень неэффективен при работе с большой программой, поскольку он перекомпилирует все, даже еслиочень мало что изменилосьБольшие приложения обычно имеют системы сборки, которые компилируют исходные файлы по отдельности и перекомпилируют только те, которые были изменены.