コンパイラがシンボルと定義を正しく見つけることができるように、コマンドの最後に最も独立したライブラリを配置する必要があります。
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で定義されているsymbol(type / class / struct / functionなど)を使用しています 、CI_Metadata.oを配置すると、コンパイラはそれを見つけることができます IPO.oの後 。ほとんどのライブラリは独立しているため、コンパイル/リンクコマンドの最後にあります。