Собственно, ситуация такова: есть некий интерфейс !!!с чистым виртуальным деструктором!!!. От него наследуется класс, где все функции интерфейса определяются, и деструктор в том числе. Интерфейс вынесен в отдельные файлы (interface.cpp и interface.h), производный класс -- в свои (main.cpp и main.h). При компиляции этого безобразия одной командой:
g++ -Wall ./interface.cpp ./main.cpp -o ./main
всё нормально. Но если делать
g++ -Wall -c ./main.cpp -o ./main.o
а потом
g++ ./main.o -o ./main
линкер начинает орать, что ссылка на деструктор базового интерфейса не определена:
./main.o(.text+0x2eb):main.cpp: undefined reference to `IBase::~IBase()' ./main.o(.text+0x315):main.cpp: more undefined references to `IBase::~IBase()' follow
Что нужно сказать g++ на втором этапе, чтобы он заткнулся?