У меня возникла проблема, связанная с тем, что компилятор GCC дает сбой, когда дело доходит до связывания двух объектных файлов, которые у меня есть. Оба объектных файла foo1.cc
и foo2.cc
включают классы из заголовочного файла с именем foo1.hh
. Кроме того, заголовочный файл foo.hh
содержит внешнее объявление экземпляра объекта, который появляется в foo1.cc
.
Следует отметить, что заголовочный файл foo.hh
будет определен только один раз между двумя исходными файлами foo1.cc
и foo2.cc
.
Когда я компилирую исходные файлы с помощью следующей команды, кажется, что все работает:
g++ foo1.cc foo2.cc
Приведенная выше команда создаст исполняемый файл с именем a.out
.
Когда я пытаюсь независимо скомпилировать исходные файлы в объектные файлы:
g++ -c foo1.cc
g++ -c foo2.cc
g++ -o foo1.o foo2.o
Компилятор GCC жалуется на неопределенные ссылки на функции в foo2.cc
. Эти функции должны быть определены в foo1.cc
; однако компоновщик этого не распознает.
Мне интересно, есть ли способ обойти эту проблему с помощью компилятора GCC.