Cuando usted enlaza un programa para utilizar la librería
cliente de MySQL, usted podría obtener errores de referencias
no definidas para los símbolos que comiencen con
mysql_
, tal como los que se muestran aquí:
/tmp/ccFKsdPa.o: In function `main': /tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init' /tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x57): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error' /tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'
Debería ser capaz de resolver este problema añadiento
-Ldir_path -lmysqlclient
al final de su
comando de enlace, donde dir_path
representa
la ruta de el directorio donde la librería cliente está
situada. Para determinar el directorio correcto, utilice este
comando:
shell> mysql_config --libs
La salida de mysql_config podría indicar otras librerías que deberían ser especificadas en el comando de enlace también.
Si obtiene errores de undefined reference
en
las funciones uncompress
o
compress
, intente añadir
-lz
al final de su comando de enlace e
intente de nuevo.
Si usted obtiene errores undefined reference
para una función que no deberían ocurrir en su sistema, tal
como connect
, compruebe la página de la
función en el manual y determine qué librerías debería
añadir para el comando de enlace.
Podría obtener errores undefined reference
como el siguiente por las funciones que no existen en su
sistema:
mf_format.o(.text+0x201): undefined reference to `__lxstat'
Esto normalmente significa que su librería cliente MySQL fue compilada en un sistema que no es compatible al 100% con el suyo. En este caso, debería descargar la última distribución de código fuente de MySQL y compilar usted mismo MySQL. Consulte Sección 2.8, “Instalación de MySQL usando una distribución de código fuente”.
Podría obtener errores de referencia en tiempo de ejecución
cuando intenta ejecutar un programa MySQL. Si estos errores
especifican símbolos que comienzan con
mysql_
o indican que la librería cliente
mysqlclient
no puede encontrarse, significa
que su sistema no puede encontrar la librería compartida
libmysqlclient.so
. La corrección para esto
es decirle a su sistema que busque las librerías compartidas
donde estén situadas. Utilice aquel de los siguientes métodos
que sea apropiedo para su sistema:
Añada la ruta al direcotorio donde se encuentre
libmysqlclient.so
a la variable de
entorno LD_LIBRARY_PATH
.
Añada la ruta al directorio donde
libmysqlclient.so
se encuentra a la
variable de entorno LD_LIBRARY
.
Copie el archivo libmysqlclient.so
a
algún directorio de los que su sistema busca, como por
ejemplo /lib
, y actualice la
información de la librería compartido ejecutando
ldconfig
.
Otra manera de resolver este problema es enlazando su programa
de manera estática con la opción -static
, o
eleminando las librería dinámicas MySQL antes de enlazar su
código. Antes de intentar el segundo método, usted debería
asegurarse de que ningún otro programa está utilizando las
librerías dinámicas.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.