Váš aktuální příkaz k sestavení:g++ demo.cpp -o demo
neobsahuje informace pro linker ld
proti kterým by měly být knihovny napojeny. Kvůli tomu se zobrazí chyba linkeru:
V této dokumentaci je napsáno, které knihovny jsou potřeba.
Propojit můžete buď staticky, nebo dynamicky.
Statické propojení znamená, že váš spustitelný soubor poběží na počítačích, které nemají nainstalované potřebné knihovny, protože knihovny jsou uvnitř spustitelného souboru. To také zvětšuje velikost spustitelného souboru. V případě MySQL Connector/C++ jsou knihovny:libmysqlcppconn-static.a
a libmysqlclient.a
Dynamické propojení znamená, že váš spustitelný soubor bude muset najít knihovny na počítači, kde by měl běžet. Potřebná knihovna je:libmysqlcppconn.so
.
Váš příkaz k sestavení s dynamickým propojením (pomocí libmysqlcppconn.so
) by měl vypadat takto:
g++ demo.cpp -o demo -lmysqlcppconn
Dále si všimněte rozdílu mezi -l
a -L
jak bylo zmíněno zde na SO
nebo zde v oficiální dokumentaci linkeru gcc
:
Nepotřebujete cestu (-L
), protože knihovny by měly ležet pod /usr/local/lib
což je výchozí instalace a je již ve vyhledávací cestě linkeru.