Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dmer

[Resolvido] de compilação para mysql usando freebsd

Recommended Posts

Estou tentando fazer uma aplicação usando C e mysql no freebsd tenho mysql versao 4.x instalada

sigo o makefile

# This assumes the MySQL software is installed in /usr/local/mysql
inc	  := /usr/local/mysql/include/mysql
lib	  := /usr/local/mysql/lib
CC	   := gcc
CPPFLAGS := -I$(inc) -D_THREAD_SAFE -D_REENTRANT
CFLAGS   := -g -W -Wall
LDFLAGS  := -static
# You can change -lmysqld to -lmysqlclient to use the
# client/server library
LDLIBS	= -L$(lib) -lmysqld -lz -lm -lcrypt
ifneq (,$(shell grep FreeBSD /COPYRIGHT 2>/dev/null))
# FreeBSD
LDFLAGS += -pthread
else
# Assume Linux
LDLIBS += -lpthread
endif

# This works for simple one-file test programs
sources := $(wildcard *.c)
objects := $(patsubst %c,%o,$(sources))
targets := $(basename $(sources))

all: $(targets)

clean:
  rm -f $(targets) $(objects) *.core
e o meu arquivo de test de conneção

#include <mysql.h>
#include <stdio.h>

main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "localhost";
   char *user = "meuusuario";
   char *password = "minhasenha";
   char *database = "db";

   conn = mysql_init(NULL);

   /* Conecta a db */
   if (!mysql_real_connect(conn, server,
		 user, password, database, 0, NULL, 0)) {
	  fprintf(stderr, "%s\n", mysql_error(conn));
	  exit(1);
   }

   /* manda a query */
   if (mysql_query(conn, "show tables")) {
	  fprintf(stderr, "%s\n", mysql_error(conn));
	  exit(1);
   }

   res = mysql_use_result(conn);

   /* mostra resultado */
   printf("MySQL Tables in mysql database:\n");
   while ((row = mysql_fetch_row(res)) != NULL)
	  printf("%s \n", row[0]);

   /* fecha connecao */
   mysql_free_result(res);
   mysql_close(conn);
}
só que na hora de compilar ele fala que não acha as strings que estariam dentro do mysql.h

veja o erro abaixo

cc -O2 -fno-strict-aliasing -pipe wcslave.c -o wcslave

/var/tmp//cc0e7yBM.o(.text+0xe): In function `main':

: undefined reference to `mysql_init'

/var/tmp//cc0e7yBM.o(.text+0x30): In function `main':

: undefined reference to `mysql_real_connect'

/var/tmp//cc0e7yBM.o(.text+0x45): In function `main':

: undefined reference to `mysql_query'

/var/tmp//cc0e7yBM.o(.text+0x55): In function `main':

: undefined reference to `mysql_use_result'

/var/tmp//cc0e7yBM.o(.text+0x7f): In function `main':

: undefined reference to `mysql_fetch_row'

/var/tmp//cc0e7yBM.o(.text+0x8f): In function `main':

: undefined reference to `mysql_free_result'

/var/tmp//cc0e7yBM.o(.text+0x97): In function `main':

: undefined reference to `mysql_close'

/var/tmp//cc0e7yBM.o(.text+0xa7): In function `main':

: undefined reference to `mysql_error'

*** Error code 1

--

Ou seja de alguma forma ele não esta lendo corretamente o .h ? Porque todas essas funções estao declaradas corretamente nele. Aguardo qualquer ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente incluir a windows.h pra ver!

naum sei c vai resolver, + lembro de ter visto uma duvida parecida por aki e isso deu certo!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit...É no freeBSD...

 

Não ta faltando um diretório no include? Tipo mysql/mysql.h? Pelo menos na faculdade se eu for inventar de mexer com o postgres,tenho que incluir postgresql/postgres.h. Isso deve vir nos pacotes *-devel.

 

http://www.vivaolinux.com.br/perguntas/ver...hp?codigo=44720

 

http://www.jsw4.net/info/listserv_archives...5/msg00171.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit...É no freeBSD...

 

Não ta faltando um diretório no include? Tipo mysql/mysql.h? Pelo menos na faculdade se eu for inventar de mexer com o postgres,tenho que incluir postgresql/postgres.h. Isso deve vir nos pacotes *-devel.

 

http://www.vivaolinux.com.br/perguntas/ver...hp?codigo=44720

 

http://www.jsw4.net/info/listserv_archives...5/msg00171.html

--

inc := /usr/local/mysql/include/mysql

lib := /usr/local/mysql/lib

 

não eles estão lah todos os arquivos

veja conteudo do mysql

--

errmsg.h my_list.h mysql_time.h

keycache.h my_net.h mysql_version.h

m_ctype.h my_no_pthread.h mysqld_error.h

m_string.h my_pthread.h raid.h

my_alloc.h my_semaphore.h sql_common.h

my_config.h my_sys.h sql_state.h

my_dbug.h my_xml.h sslopt-case.h

my_dir.h mysql.h sslopt-longopts.h

my_getopt.h mysql_com.h sslopt-vars.h

my_global.h mysql_embed.h typelib.h

 

--

e em lib/

libdbug.a libmysqlclient.la libmysqlclient_r.so.14

libheap.a libmysqlclient.so libmystrings.a

libmerge.a libmysqlclient.so.14 libmysys.a

libmyisam.a libmysqlclient_r.a libnisam.a

libmyisammrg.a libmysqlclient_r.la libvio.a

libmysqlclient.a libmysqlclient_r.so

---

e para complicar + a situação se você olhar dentro do mysql.h ele contém todas as entradas

--

em mysql.h

--

MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,

libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so

MYSQL * STDCALL mysql_init(MYSQL *mysql);

---

MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,

#define HAVE_MYSQL_REAL_CONNECT

e por ai vai

Compartilhar este post


Link para o post
Compartilhar em outros sites
libdbug.a libmysqlclient.la libmysqlclient_r.so.14

libheap.a libmysqlclient.so libmystrings.a

libmerge.a libmysqlclient.so.14 libmysys.a

libmyisam.a libmysqlclient_r.a libnisam.a

libmyisammrg.a libmysqlclient_r.la libvio.a

libmysqlclient.a libmysqlclient_r.so

 

Só vi libmysqlclient.

 

Cadê a libmysqld que você usa no makefile?

LDLIBS = -L$(lib) -lmysqld -lz -lm -lcrypt

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode fechar o tópico voce me de uma boa ideia java .

-L/usr/local/lib/mysql -lmysqlclient

a string :P e foi

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.