Quiero conectarme a una base de datos mysql con C++ en linux. En mi máquina local que estoy usando Ubuntu, e instalado los paquetes de servidor y cliente de MySQL:Configuración de Mysql ++ en Linux
sudo apt-get install mysql-server mysql-client
me encontré con Mysql++ pero tengo algunos problemas al ejecutar ./configure de su paquete binario. El error dice:
checking for MySQL library directory... configure: error: Didn't find mysqlclient library in '/usr/lib64 /usr/lib /usr/lib64/mysql /usr/lib/mysql /usr/local/lib64 /usr/local/lib /usr/local/lib/mysql /usr/local/mysql/lib /usr/local/mysql/lib/mysql /usr/mysql/lib/mysql /opt/mysql/lib /opt/mysql/lib/mysql /sw/lib /sw/lib/mysql'
veo donde puedo utilizar este comando para especificar la ruta:
./configure --with-mysql-lib=/...
pero no sé dónde apuntar a. Usé whereis mysql pero no puedo encontrar ningún directorio mysql que contenga un subdirectorio lib. ¿Dónde se instalarían las bibliotecas mysqlclient?
EDIT:
Después de hacer localizar libmysqlclient
regresé
/usr/lib/i386-linux-gnu/libmysqlclient.so.18
/usr/lib/i386-linux-gnu/libmysqlclient.so.18.0.0
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18.0.0
/usr/share/doc/libmysqlclient18
/usr/share/doc/libmysqlclient18/changelog.Debian.gz
/usr/share/doc/libmysqlclient18/copyright
/var/cache/apt/archives/libmysqlclient18_5.5.22-0ubuntu1_i386.deb
/var/lib/dpkg/info/libmysqlclient18:i386.list
/var/lib/dpkg/info/libmysqlclient18:i386.md5sums
/var/lib/dpkg/info/libmysqlclient18:i386.postinst
/var/lib/dpkg/info/libmysqlclient18:i386.postrm
/var/lib/dpkg/info/libmysqlclient18:i386.shlibs
tanto, he intentado ./configure --with-mysql-lib=/usr/lib/i386-linux-gnu
y parece que completar sin ninguna queja.
Aunque esto resuelve el problema de completar ./configure, todavía tengo más problemas. Cuando corro make
las cosas van bien hasta este punto:
In file included from ./lib/sql_buffer.h:31:0, from ./lib/sql_buffer.cpp:26: ./lib/refcounted.h:258:2: error: ‘size_t’ does not name a type ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer()’: ./lib/refcounted.h:89:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer(T*)’: ./lib/refcounted.h:100:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h:104:4: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h:104:16: error: expected type-specifier before ‘size_t’ ./lib/refcounted.h:104:16: error: expected ‘;’ before ‘size_t’ ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer(const ThisType&)’: ./lib/refcounted.h:112:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h:115:8: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h: In destructor ‘mysqlpp::RefCountedPointer::~RefCountedPointer()’: ./lib/refcounted.h:125:7: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h: In member function ‘void mysqlpp::RefCountedPointer::swap(mysqlpp::RefCountedPointer::ThisType&)’: ./lib/refcounted.h:246:13: error: ‘refs_’ was not declared in this scope make: *** [mysqlpp_sql_buffer.o] Error 1
No estoy muy familiarizado con C++, así que no estoy seguro de lo que significa exactamente el error. Cualquier ayuda o dirección sobre cómo obtener la configuración de Mysql ++ desde este punto sería muy apreciada. Aunque, admito que también estoy empezando a buscar bibliotecas alternativas para usar.
Wow, gracias por tomarse el tiempo para escribir esto. Terminé frustrado con él y usé el MYSQL C api directamente. Pero estoy seguro de que su solución ayudará a quienes también tengan este problema en el futuro. – Aaron
también había elegido ese camino originalmente, PERO no pude detectar los errores de mysql (como intentar insertar una entrada de clave duplicada)) y eso haría abortar mi programa, así que seguí donde lo había dejado (me beneficié de su solución del paso 1 [ubicación de los archivos lib]). –