Du bör sätta det mest oberoende biblioteket i slutet av kommandot, så att kompilatorn kan hitta symboler och definitioner korrekt:
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
Genom att göra det på detta sätt kommer kompilatorn att fortsätta söka efter odefinierade symboler från nästa länkande filer. Till exempel om IPO.o har använder symbol(typ/klass/struct/funktion etc) definierade i CI_Metadata.o , kan kompilatorn hitta det eftersom du sätter CI_Metadata.o efter IPO.o . De flesta bibliotek är oberoende, det är därför de är i slutet av kommandot kompilera/länka.