Dovresti inserire la maggior parte della libreria indipendente alla fine del comando, in modo che il compilatore possa trovare correttamente simboli e definizioni:
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
In questo modo, il compilatore continuerà a cercare simboli non definiti dai file di collegamento successivi. Ad esempio se IPO.o
utilizza simboli (tipo/classe/struttura/funzione ecc.) definiti in CI_Metadata.o
, il compilatore può trovarlo perché metti CI_Metadata.o
dopo IPO.o
. La maggior parte delle librerie sono indipendenti, ecco perché si trovano alla fine del comando compile/link.