Incompatibilidade libmysqlclient Prisma no Linux

Sabemos que o Linux é bem diferente do Windows. Aliás é dificil dizer o Linux, pois ele á apenas o kernel, o que temos de verdade são vaaárias distribuições: Ubuntu, Fedora, Mint, PCLinux, Mandriva, Debian etc, etc, etc…

Devido a esse fato, distribuir um programa em binário para distros Linux fica meio comprometido a falhar, a não ser que você compile para cada distro separadamente e disponibilize assim.

Em teste aqui em casa, compilei Prisma juntamente com mysqlclient lib e funcionou corretamente no meu Mint 17, mas bastou eu instalar em um desktop aqui com Mint 18 que a lib mysql não funcionou mais.

Deu um erro de incompatibilidade.

O que eu fiz para corrigir o erro? Recompilei apenas a lib mysql no pc com Mint 18 e funcionou Blz, depois de muito trabalho, é claro, para liberar o acesso remoto do MySQL (lado servidor).

Para liberar o acesso em outro computador que não seja o servidor eu já fiz um post tutorial, veja <aqui>

Agora vou explicar como compilar a biblioteca mysql Prisma no Linux

Baixe o source <aqui>
Para compilar no linux é necessário instalar o pacote essencial caso não tenha.

Mint, Ubuntu certamente terá, se não tiver (gcc, g++ etc) instale com o seguinte comando no terminal:

(o comando sudo pode mudar de acordo com a distro);

Para o mysql é necessário instalar os pacotes libmysqlclient.
Para isso abra o synaptic (gerenciador de pacotes deb) ou o gerenciador de aplicativos de sua distro e pesquise por “libmysqlclient” sem aspas.

O resultado provavelmente será:

libmysqlclient-dev e libmysqlclient18 (linux Mint17 – Ubuntu-14.04)

ou libmysqlclient-dev e libmysqlclient20 (linxu Mint18 – Ubuntu-16.04);

Instale esses dois pacotes e execute o script compila_mysql.sh

Lembre-se de dar premissão de execussão no terminal assim:

Se tudo der certo aparecerá a lib mysql.so e ela será instalada pelo proprio script.

Agora sim você poderá conectar um programa prisma com MySQL!!!

Falou, gente, é isso.

Att. Adalberto

4 thoughts on “Incompatibilidade libmysqlclient Prisma no Linux

  1. Boa tarde Adalberto,

    Tive um problema justamente com a libmysqlclient-dev

    Tentei instalar em um Debian que tem o MariaDB instalado.
    Quando fui instalar a libmysqlclient-dev o instalador disse que ia remover o MariaDB-server e tudo dele pra poder instalar a lib

    Teremos uma solução?

    1. root@3139723132:~# prisma extratocob.prisma
      prisma: erro no carregamento do modulo ‘mysql’ do arquivo ‘/usr/local/lib/prisma/1.0/clib/mysql.so’:
      /usr/local/lib/prisma/1.0/clib/mysql.so: wrong ELF class: ELFCLASS64
      origem da execucao:
      [C]: in ?
      [C]: in funcao ‘inclua’
      extratocob.prisma:13: in trecho de codigo principal
      [C]: in ?
      root@3139723132:~# apt-get install libmysqlclient-dev
      Lendo listas de pacotes… Pronto
      Construindo árvore de dependências
      Lendo informação de estado… Pronto
      The following package was automatically installed and is no longer required:
      libopts25
      Use ‘apt-get autoremove’ to remove it.
      Os pacotes extra a seguir serão instalados:
      libmysqlclient18 mysql-common zlib1g-dev
      Os pacotes a seguir serão REMOVIDOS:
      libmariadbclient18 mariadb-client-5.5 mariadb-client-core-5.5 mariadb-server mariadb-server-5.5
      mariadb-server-core-5.5
      Os NOVOS pacotes a seguir serão instalados:
      libmysqlclient-dev zlib1g-dev
      Os pacotes a seguir serão atualizados:
      libmysqlclient18 mysql-common
      2 pacotes atualizados, 2 pacotes novos instalados, 6 a serem removidos e 143 não atualizados.
      É preciso baixar 1.893 kB de arquivos.
      Depois desta operação, 98,1 MB de espaço em disco serão liberados.
      Você quer continuar [S/n]?

      1. Não desinstale não, faça o seguinte, instale o pacote correspondente ao mariadb usando o seguinte comando:

        sudo apt-get install libmariadbclient-dev

        Pelo que pesquisei a api é a mesma do mysql, então por lógica já poderá compilar tranquilamente usando o arquivo compila_mysql.sh.

        Tenta e me retorna dizendo se deu certo. Ok.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *