Имеем проект, в который, в частности, включены файлы
com_port.h
libcomport.a
sas_iface.h
libsasiface.a
В *.a архивах лежат скомпиленные в C++ библиотеки. Если при линковке командой
g++ -L/usr/X11R6/lib -o billsys.o ... timelib.o libbill.a ... libcomport.a libsasiface.a -lGL ... -lusb
Получаются ошибки вида
libsasiface.a(sas_iface.o): In function `CSasIface::Init(ComPort_t, ComPortDevice_t)':
sas_iface.cpp undefined reference to `CComPort::CComPort()'
sas_iface.cpp undefined reference to `CComPort::GetComDevice(ComPortDevice_t, ComPort_t)'
sas_iface.cpp undefined reference to `CComPort::~CComPort()'
sas_iface.cpp undefined reference to `CComPort::~CComPort()'
collect2: ld returned 1 exit status
То для исправления этой ошибки нужно изменить последовательность перечисления линковочных файлов. В данном случае, вместо
libcomport.a libsasiface.a
надо прописать
libsasiface.a libcomport.a
и линковка произойдет без ошибок.