Como conectarnos a una instancia de servidor mysql-server y ejecutar consultas contra sus bases de datos.
Requerimientos:
Las cabeceras y librerías de C para realizar la conexión, nos las descargamos desde la web de mysql: http://dev.mysql.com/downloads/
Nos descargamos la versión adecuada a nuestro sistema, y obtenemos un archivo comprimido que contiene varias carpetas:
Para esta parte necesitaremos tener los permisos adecuados:
Las cabeceras:
El contenido de la carpeta include lo copiamos en /usr/include
Las librerías
El contenido de lib lo copiamos en /usr/lib
estas también se pueden instalar desde los repositorios:
sudo apt-get -s install libmysqlclient15-dev
A partir de ahora, con gcc podemos compilar nuestro codigo en C, indicándole con parámetros:
-L/usr/lib/mysql : añadimos una ruta a la lista de directorios donde deben buscarse las librerías que usa el programa
-lmysqlclient: le indicamos que para compilar el programa utilice la librería mysqlclient
Por ejemplo : gcc -o test -L/usr/lib/mysql -lmysqlclient test.c
Informaciones sacadas de:
http://lists.mysql.com/mysql/200178
http://ubuntuforums.org/showthread.php?t=986042
Etiquetas
__linux__
(1)
/usr/include
(1)
/usr/lib
(1)
#define
(3)
#else
(1)
#endif
(1)
#ifdef
(1)
#ifndef
(1)
#include
(1)
agregar
(1)
apt-get
(1)
argv
(1)
c
(5)
conectar
(1)
enlace
(1)
facebook
(1)
funciones
(1)
gcc
(1)
include
(1)
java
(1)
javascript
(1)
lib
(1)
libmysqlclient
(1)
linux
(2)
macro
(1)
muro
(1)
mysql
(3)
mysql_close
(1)
mysql_error
(2)
mysql_fetch_row
(1)
mysql_free_result
(1)
mysql_init
(1)
mysql_num_fields
(1)
mysql_query
(2)
mysql_real_connect
(1)
MYSQL_RES
(1)
MYSQL_ROW
(1)
mysql_use_result
(2)
mysql.h
(1)
mysqlclient
(1)
non-static
(1)
printf
(2)
sistema operativo
(1)
static
(1)
sudo
(1)
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
sábado, 19 de febrero de 2011
C - Acceder a una base de datos en mysql desde C (1 de 2. Requisitos)
Etiquetas:
/usr/include,
/usr/lib,
apt-get,
c,
conectar,
gcc,
include,
lib,
libmysqlclient,
linux,
mysql,
mysqlclient,
sudo
viernes, 18 de febrero de 2011
C - Haciendo un codigo compatible con linux y windows
Cuando estamos haciendo un programa en C necesitamos tener en cuenta para en que sistema operativo va a ser compilado y ejecutado, porque aunque la mayoría del código valdrá indistintamente para ambos sistemas, con algunas acciones concretas que implican interactuar con el sistema operativo no ocurre así.
Un caso sería la construcción de rutas de acceso a un archivo, o un caso mucho más sencillo, hacer un limpiado de la pantalla antes de empezar a escribir, los comandos "clear" o "cls" según el sistema en el que estemos.
Existe una forma de hacerlo sin tener que reescribir lineas de código antes de compilar el programa, son las directivas, que permiten dirigir la ejecución del código en función de si está definida o no una macro.
o también:
Cuando estamos en un sistema linux, el compilador tiene predefinida una macro __linux__ o linux, según el sistema, así, comprobando la existencia o no de esa macro, sabemos en que sistema estamos ejecutando el programa, vamos a nuestro ejemplo de limpiar la pantalla:
Para no tener que preocuparnos si nuestro sistema linux tiene predefinida la macro __linux__ o la macro linux, y poder trabajar siempre con una de ellas independientemente del sistema (en este caso usar siempre __linux__), realizamos una comprobación previa, si existe linux, nosotros creamos __linux__.
incluso podríamos ahorrarnos el crear una función y definir una macro que simplemente sería substituida a la hora de compilar:
y en el código escibiríamos "clrscr;" donde fuera necesario.
Un caso sería la construcción de rutas de acceso a un archivo, o un caso mucho más sencillo, hacer un limpiado de la pantalla antes de empezar a escribir, los comandos "clear" o "cls" según el sistema en el que estemos.
Existe una forma de hacerlo sin tener que reescribir lineas de código antes de compilar el programa, son las directivas, que permiten dirigir la ejecución del código en función de si está definida o no una macro.
//definición de una macro
#define __micontrol__
//si la macro está definida
#ifdef __micontrol__
printf("%s","La macro __micontrol__ está definida");
//sino
#else
printf("%s","La macro __micontrol__ NO está definida");
#endif
o también:
//si la macro está definida
#ifdef __micontrol__
printf("%s","La macro __micontrol__ está definida");
#endif
//si la macro no está definida
#ifndef __micontrol__
printf("%s","La macro __micontrol__ NO está definida");
#endif
Cuando estamos en un sistema linux, el compilador tiene predefinida una macro __linux__ o linux, según el sistema, así, comprobando la existencia o no de esa macro, sabemos en que sistema estamos ejecutando el programa, vamos a nuestro ejemplo de limpiar la pantalla:
Para no tener que preocuparnos si nuestro sistema linux tiene predefinida la macro __linux__ o la macro linux, y poder trabajar siempre con una de ellas independientemente del sistema (en este caso usar siempre __linux__), realizamos una comprobación previa, si existe linux, nosotros creamos __linux__.
#ifdef linux
#ifndef __linux__
#define __linux__
#endif
#endif
void limpiarpantalla()
{
#ifdef __linux__
system("clear");
#else
sistem("cls");
#endif
}
incluso podríamos ahorrarnos el crear una función y definir una macro que simplemente sería substituida a la hora de compilar:
#ifdef __linux__
#define clrscr system("clear");
#else
#define clrscr system("cls");
#endif
y en el código escibiríamos "clrscr;" donde fuera necesario.
Suscribirse a:
Entradas (Atom)