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.