Debe colocar la biblioteca más independiente al final del comando, para que el compilador pueda encontrar símbolos y definiciones correctamente:
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
Al hacerlo de esta manera, el compilador continuará buscando símbolos indefinidos de los siguientes archivos de enlace. Por ejemplo si IPO.o
tiene un símbolo de uso (tipo/clase/estructura/función, etc.) definido en CI_Metadata.o
, el compilador puede encontrarlo porque pones CI_Metadata.o
después de IPO.o
. La mayoría de las bibliotecas son independientes, por eso se encuentran al final del comando compilar/enlazar.