Página 1 de 1
compilei contrib/mysql p/ linux Mas nao linkar com aplicacao
Enviado: 11 Jun 2007 11:55
por enfosoft
Compilei a lib contrib\mysql para linux porem, quando vou lincar com os meus aplicativos está dando a Seguinte mensagem:
/usr/lib/gcc/i586-suse-linux/4.1.0/../../../../i586-suse-linux/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
No servidor onde estou compilando nao tenho instalado o banco mysql
Outra coisa. Para esta lib rodar em windows tem que ter a LIBMYSQL.DLL na pasta da aplicacao. E no linux o que preciso?
libmysqlclient
Enviado: 11 Jun 2007 13:37
por rmg
Este erro ocorre, pois na hora da compilação, não está sendo encontrada a lib mysqlclient. No seu hbmake ou makefile está definido para buscar esta lib, pois ela realmente é necessária para conectar ao banco mysql.
E para fazer conexão com o banco, vc precisa ter a lib contendo as funções de conexão, que estão na libmysqlclient.
Não sei como foi instalado o seu linux, mas quando instalamos como desenvolvimento, todas as libs necessárias são instaladas. Nunca utilizei o suse, mas se ele possuir o apt-get, instale a libmysqlclient-dev que provavelmente conseguirá compilar o programa.
Procure primeiro qual versão da lib está disponível com apt-cache e depois instale com apt-get.
# apt-cache search libmysql
Então será retornado o nome das libs encontradas, que possuem libmysql no nome:
libmysql++-dev - mysql C++ library bindings (development)
libmysql++2c2a - mysql C++ library bindings (runtime)
libmysql-java - Java database (JDBC) driver for MySQL
libmysql-ocaml - OCaml bindings for MySql
libmysql-ocaml-dev - OCaml bindings for MySql
libmysql-ruby - MySQL module for Ruby
libmysql-ruby1.8 - MySQL module for Ruby 1.8
libmysqlclient15-dev - mysql database development files
libmysqlclient15off - mysql database client library
openoffice.org-base - OpenOffice.org office suite - database
Então localize a libmysqlclient e instale com apt-get assim:
# apt-get install libmysqlclient15-dev
Após feito isto, tente compilar novamente seu programa.
E respondendo a segunda pergunta, relativa a libmysql.dll utilizada no Windows, no Linux vc precisa ter a lib informada acima instalada, pois esta dll no Windows faz o mesmo papel da libmysql no Linux. Ela possui as funções de conexão com o banco.
Enviado: 11 Jun 2007 19:53
por enfosoft
Obrigado pela dica. Conheco Pouco Linux, mas suse nao tem apt
entaum instalei baixando 2 rpm. e instalei rpm -i *.
Agora estou tentando seguir tua dica, mas nao retorna nenhuma listagem de libmysql
fileserver:/data/dados/apt # apt-cache search libmysql fileserver:/data/dados/apt #
Olha,
Enviado: 11 Jun 2007 20:24
por rmg
Realmente o que você precisa para compilar seu programa é somente este lib que lhe falei. Você não precisa nem "instalá-la". Se você conseguir o pacote contendo esta lib para o suse que está utilizando, basta copia-la para a respectiva pasta.
Provavelmente esta lib vai estar na pasta /usr/lib do seu sistema.
Outra forma de instalar o pacote seria utilizando o YaST do suse.
Dei uma procurada rápida na net para ver se encontrava este pacote específico para o suse, porem não encontrei. Vai aí pra vc um pacote do slackware contendo a libmysqlclient15. Você pode descompacta-lo e copiar apenas as respectivas libs libmysqlclient* que estão na pasta /usr/lib para dentro da pasta /usr/lib do seu sistema.
http://www.slackware.at/data/slackware- ... i486-1.tgz
Desculpe não poder ajudar tanto no caso do Suse, não saber onde encontrar os pacotes, pois eu realmente nunca utilizei esta versão do Linux. Particularmente eu utilizo o Debian e o Conectiva 10.
O conectiva 10 eu considero o mais fácil de utilizar para programar com xHarbour. Mas linux é sempre linux. Basta saber onde achar os pacotes necessários e pronto.
Se eu achar aqui onde encontrar este pacote eu lhe aviso, mas tente descompactar este pacote que lhe passei e jogar a lib na /usr/lib.
Abraço.
apt-cache
Enviado: 11 Jun 2007 20:26
por rmg
E quanto ao apt-cache, se vc não tem o apt-get, provavelmente não terá este comando tb.
Enviado: 12 Jun 2007 08:43
por enfosoft
Bom dia.
Primeiramente Obrigado pelas dicas e atencao.
Baixei o pacote do mysql (instalei o apt) e tenho as seguintes libs na pasta /usr/lib
libmysqlclient_r.so.15 libmysqlclient.so.15
libmysqlclient_r.so.15.0.0 libmysqlclient.so.15.0.0
sao 2 links 2 arquivos.
e em /usr/lib/mysql tem 4 links para estes arquivos
Mas na compilacao o problema continua.
Na compilacao diz que nao encontrou o arquivo mysqlclient, e estes arquivos sao libmysql...... E assim mesmo? Tentei renomear um arquivo desses para mysqlclient, mas tambem nao resolveu.
O que estou fazendo errado?
Abraco a todos
Enio
Amigo
Enviado: 13 Jun 2007 11:31
por rmg
Quais são as pastas que vc está utilizando para o makefile/hbmake buscar as libs?
O nome do arquivo da lib é realmente libmysqlclient e não mysqlclient. Quando você define o parametro -l antes do nome da lib no seu makefile/hbmake, já é entendido que deve buscar o arquivo com lib antes do nome ou seja, quando define -lmysqlclient, o que será buscado é libmysqlclient.
Se o erro persiste, com certeza a libmysql não está na pasta de onde ele está buscando as libs.
Se possível post aqui o seu makefile, hbmake para eu dar uma olhada.
Outro detalhe, na hora da compilação, sempre é buscada a lib estática do linux, ou seja, o arquivo com terminação ".a". Resumindo ele está buscando libmysqlclient.a
Verifique na sua pasta /usr/lib e se esta lib não estiver lá, nada feito.
Você instalou o pacote -dev do mysql?
Creio que seja o pacote -dev mesmo que tenha a lib estática. libmysqlclient-dev.
Instale este pacote e verifique na pasta /usr/lib se existe a lib libmysqlclient.a
Só falta isto mesmo para vc compilar seu sistema. Se não conseguir, não deixe de postar aqui para tertarmos solucionar seu problema.
Abraço.