title: MySQL C++ Connector: undefined reference to `get_driver_instance'
body: <p>I've been trying to get the MySQL connector working I've installed both the connector and the mysql client library but I am still getting this error:</p>
  
  <pre><code>obj/Database.obj: In function `Database::connect()':
  /home/xeross/alpine/src/server/Database.cpp:13: undefined reference to `get_driver_instance'
  collect2: ld returned 1 exit status
  make[2]: *** [alpine-server] Error 1
  make[1]: *** [.build-conf] Error 2
  make: *** [.build-impl] Error 2
  </code></pre>
  
  <p>Using Ubuntu 10.04
  And my makefile is as follows:</p>
  
  <pre><code>INCLUDES = -I./src -I./src/shared
  OUTDIR = bin
  INTDIR = obj
  OPTIONS = -ggdb -g3 -Wall -O0
  
  alpine-server : Shared.a AsyncServerSocket.obj PlayerHandler.obj PacketHandler.obj     Session.obj User.obj Database.obj init
      g++ $(INCLUDES) $(OPTIONS) -static \
      -pthread \
      -lmysqlcppconn-static \
              -o $(OUTDIR)/alpine-server src/server/main.cpp \
          $(INTDIR)/AsyncServerSocket.obj \
          $(INTDIR)/PacketHandler.obj \
          $(INTDIR)/Database.obj \
          $(INTDIR)/PlayerHandler.obj \
          $(INTDIR)/Session.obj \
          $(INTDIR)/User.obj \
          $(INTDIR)/Shared.a \
          -lboost_system \
          -lmysqlclient
  
  
  AsyncServerSocket.obj : src/server/AsyncServerSocket.cpp init
  g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/AsyncServerSocket.obj src/server/AsyncServerSocket.cpp
  
  PlayerHandler.obj : src/server/PlayerHandler.cpp init
  g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/PlayerHandler.obj src/server/PlayerHandler.cpp
  
  PacketHandler.obj : src/server/PacketHandler.cpp init
  g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/PacketHandler.obj src/server/PacketHandler.cpp
  
  Session.obj : src/server/Session.cpp init
      g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/Session.obj src/server/Session.cpp
  
  User.obj : src/server/User.cpp init
      g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/User.obj src/server/User.cpp
  
  Database.obj : src/server/Database.cpp init
      g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/Database.obj src/server/Database.cpp
  
  # Shared.a
  Shared.a : Packet.obj Flags.obj AsyncSocket.obj Log.obj init
      ar -cvq $(INTDIR)/Shared.a \
          $(INTDIR)/Packet.obj \
          $(INTDIR)/Flags.obj \
          $(INTDIR)/AsyncSocket.obj \
          $(INTDIR)/Log.obj
      ranlib $(INTDIR)/Shared.a
  
  Packet.obj : src/shared/packet.cpp init
      g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/Packet.obj src/shared/packet.cpp
  
  Flags.obj : src/shared/Flags.cpp init
      g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/Flags.obj src/shared/Flags.cpp
  
  AsyncSocket.obj : src/shared/AsyncSocket.cpp init
  g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/AsyncSocket.obj src/shared/AsyncSocket.cpp
  
  Log.obj : src/shared/Log.cpp init
      g++ -c $(INCLUDES) $(OPTIONS) -o $(INTDIR)/Log.obj src/shared/Log.cpp
  
  init:
      mkdir -p bin obj
  
  clean:
      rm -f $(INTDIR)/*.obj $(INTDIR)/*.a
  </code></pre>
  
  <p>The Code</p>
  
  <pre><code>// Excerpt from .hpp file
  #include &lt;cppconn/driver.h&gt;
  #include &lt;cppconn/connection.h&gt;
  #include &lt;cppconn/resultset.h&gt;
  #include &lt;cppconn/statement.h&gt;
  // End excerpt
  
  void Database::connect()
  {
      std::stringstream connString;
      connString &lt;&lt; "tcp://";
      connString &lt;&lt; m_host;
      connString &lt;&lt; ":";
      connString &lt;&lt; m_port;
  
      m_driver = get_driver_instance(); // This guy is being a *****
      m_conn = m_driver-&gt;connect(connString.str(), m_user, m_password);
      m_conn-&gt;setSchema(m_database);
  }
  </code></pre>
  
  <p>What can I do to fix this ?</p>