Трябва да поставите най-независимата библиотека в края на командата, така че компилаторът да може да намери символ и дефиниции правилно:
c++ -L/usr/lib/x86_64-linux-gnu -o tom tom.o Block.o IPC.o \
ConnectMxctl.o CI_Metadata.o Log.o \
-lmysqlclient -lpthread -lz -lm -lrt -ldl
Правейки го по този начин, компилаторът ще продължи да търси недефинирани символи от следващите свързващи файлове. Например, ако IPO.o
използва символ (тип/клас/структура/функция и т.н.), дефиниран в CI_Metadata.o
, компилаторът може да го намери, защото сте поставили CI_Metadata.o
след IPO.o
. Повечето библиотеки са независими, затова са в края на командата за компилиране/свързване.