MySQL no C [RESOLVIDO]

1. MySQL no C [RESOLVIDO]

Zone
Zone

(usa Fedora)

Enviado em 11/02/2013 - 01:50h

Boa noite comunidade VoL,

Já estou há algumas horas buscando tutoriais para solucionar o meu problema, mas sem grandes avanços, espero conseguir aqui o que eu procuro. Quero fazer uma consulta em um banco de dados MySQL utilizando a linguagem C, para fins didáticos, encontrei um tutorial aqui mesmo no VoL que me ajudou em como proceder ( http://www.vivaolinux.com.br/artigo/Usando-MySQL-na-linguagem-C?pagina=1 ), já efetuei a instalação da biblioteca necessária no fedora mysql-devel, utilizei o exemplo contido no link, então aparece o meu problema, ao executar a parte da tentativa de conexão, utilizando o comando gcc -o teste teste.c, ocorre isso:

/tmp/ccJaAth8.o: In function `main':
teste.c:(.text+0x17): undefined reference to `mysql_init'
teste.c:(.text+0x52): undefined reference to `mysql_real_connect'
teste.c:(.text+0x70): undefined reference to `mysql_close'
teste.c:(.text+0x8b): undefined reference to `mysql_error'
teste.c:(.text+0x9d): undefined reference to `mysql_errno'
collect2: error: ld returned 1 exit status

E se faço o link do programa com a biblioteca com o comando gcc -o teste teste.c -lmysqlclient, ocorre:

/usr/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status

O que estou esquecendo de fazer? Alguém pode me orientar?


  


2. MELHOR RESPOSTA

Vitor Luis
VitorLuis

(usa Ubuntu)

Enviado em 11/02/2013 - 18:03h

Você precisa colocar no comando de compilação, as bibliotecas do MySQL.

Além do "-lmysqlclient" adicione também ao comando de compilação a saída do comando "mysql_config --libs"

No meu caso o comando de compilação ficou assim:


gcc mysql-teste.c -rdynamic -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto -o exec-mysql mysql-teste.o


Qualquer dúvida, posta aí.

3. Re: MySQL no C [RESOLVIDO]

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 11/02/2013 - 12:18h

mostra o código fonte
para podemos analizar


4. Re: MySQL no C [RESOLVIDO]

Zone
Zone

(usa Fedora)

Enviado em 11/02/2013 - 12:29h

Como citado peguei o exemplo de teste de conexão do link, mas está ae, vlw pela atenção.

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

void main(void)
{
MYSQL conexao;

mysql_init(&conexao);
if ( mysql_real_connect(&conexao, "localhost", "guest", "guest", "teste", 0, NULL, 0) )
{
printf("conectado com sucesso!\n");
mysql_close(&conexao);
}
else
{
printf("Falha de conexao\n");
printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));
}
}


5. Re: MySQL no C [RESOLVIDO]

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 11/02/2013 - 14:59h

Com o serviço MySQL iniciado e compilado conforme gcc exemplo-mysql.c -lmysqlclient -o ex-mysql
exemplo-mysql.c

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

int main()
{
MYSQL conexao;

mysql_init(&conexao);
if( mysql_real_connect(&conexao, "localhost", "root", "senha", "base", 0, NULL, 0) )
{
printf("conectado com sucesso!\n");
mysql_close(&conexao);
}
else
{
printf("Falha de conexao\n");
printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));
}
return 0;
}



executado

./ex-mysql
conectado com sucesso!




6. Agradecimento

Zone
Zone

(usa Fedora)

Enviado em 12/02/2013 - 16:11h

Obrigado saitam e VitorLuis, a ajuda de vocês foi bem vinda.




7. Re: MySQL no C [RESOLVIDO]

Ramon Sales
RamonSales

(usa Ubuntu)

Enviado em 01/05/2016 - 01:17h

Passando só pra agradecer, procurei muito e só aqui encontrei a solução.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts