A Ponte Entre Dois Mundos
Sabe aquela sensação de tentar conversar com alguém que fala um idioma completamente diferente e você precisa
de um intérprete? Pois é, o Lazarus e o Qt vivem exatamente esse dilema
romântico. O Lazarus (usando a LCL) não "fala" Qt nativamente; ele precisa de um tradutor oficial, e esse
tradutor é a biblioteca libqt5pas (para o Qt5) ou a libqt6pas (para o moderno Qt6).
Essas bibliotecas são o que chamamos de bindings. Elas pegam as chamadas do Free Pascal e as traduzem para a API do Qt em C++. Sem elas, o Lazarus no Linux fica "mudo" se você tentar usar o toolkit Qt.
Por que Compilar se Posso Instalar?
Você deve estar pensando: "Gladiston, por que eu perderia meu precioso tempo compilando isso se o repositório da minha distro já tem o pacote?".
Primeiro, nem sempre a versão do repositório é a que você precisa — especialmente se você estiver usando uma versão muito nova (ou muito específica) do Lazarus. Segundo, ao compilar no seu próprio hardware, o compilador otimiza o código para as instruções específicas do seu processador. Em alguns casos, isso se traduz em uma performance mais "lisinha" e responsiva na IDE e nos seus programas.
É como comprar um terno: você pode comprar um pronto no shopping (repositório) ou ir ao alfaiate (compilar). O do alfaiate sempre cai melhor!
Antes de Começar: As Ferramentas
Não dá para construir uma casa sem ferramentas, certo? Para compilar esses bindings, seu Linux precisa de alguns pacotes essenciais de desenvolvimento e, claro, do próprio toolkit do Qt6.
No Ubuntu/Debian, resolva isso com:
sudo apt install qt6-base-dev qt6-base-dev-tools build-essential
Se você estiver no Fedora, o caminho é este:
sudo dnf groupinstall "Development Tools"
sudo dnf install qt6-qtbase-devel
Mãos à Obra: O Passo a Passo
Primeiro, precisamos localizar onde o Lazarus está instalado no seu sistema. Dentro da pasta do Lazarus, existe um caminho sagrado onde os fontes dos bindings residem. Siga os comandos abaixo com fé e coragem:
# Entre na toca do coelho (ajuste o caminho se necessário)
cd lazarus/lcl/interfaces/qt6/cbindings
# Prepare o terreno para a compilação
# Dica: em alguns sistemas pode ser qmake-qt6
qmake6
# Inicie a forja!
make
# Instale no sistema (no Debian/Ubuntu use o PREFIX abaixo)
sudo make install PREFIX=/usr/lib/x86_64-linux-gnu
No final da compilação, você receberá uma saída como essa:
/usr/bin/qmake6 -install qinstall -exe libQt6Pas.so.6.2.10 /usr/lib/x86_64-linux-gnu/libQt6Pas.so.6.2.10
strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libQt6Pas.so.6.2.10
ln -f -s libQt6Pas.so.6.2.10 /usr/lib/x86_64-linux-gnu/libQt6Pas.so
ln -f -s libQt6Pas.so.6.2.10 /usr/lib/x86_64-linux-gnu/libQt6Pas.so.6
ln -f -s libQt6Pas.so.6.2.10 /usr/lib/x86_64-linux-gnu/libQt6Pas.so.6.2
Isso indica que as bibliotecas estão instaladas em /usr/lib/x86_64-linux-gnu.
Dica de Sobrevivência: Se você estiver usando o Qt5, o caminho mudará para
.../interfaces/qt5/... e o comando será qmake ou qmake-qt5. Mas o
espírito é o mesmo!
O Grande Teste: Verificação de Versão
Depois de todo esse trabalho, não queremos apenas acreditar que funcionou. Queremos ter
certeza. O Linux tem uma ferramenta chamada ldconfig que gerencia as bibliotecas
compartilhadas. Vamos perguntar a ela se o nosso novo tradutor está pronto para o serviço:
sudo ldconfig -v | grep libQt6Pas
Note agora:
/sbin/ldconfig.real: Não foi possível obter estado de /usr/lib64/gtk-2.0/modules: Arquivo ou diretório inexistente
/sbin/ldconfig.real: Não foi possível obter estado de /usr/local/lib/x86_64-linux-gnu: Arquivo ou diretório inexistente
/sbin/ldconfig.real: Caminho “/usr/lib/x86_64-linux-gnu” fornecido mais de uma vez
(de /etc/ld.so.conf.d/x86_64-linux-gnu.conf:4 e /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Caminho “/lib/x86_64-linux-gnu” fornecido mais de uma vez
(de :0 e /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Caminho “/usr/lib/x86_64-linux-gnu” fornecido mais de uma vez
(de :0 e /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Caminho “/usr/lib” fornecido mais de uma vez
(de :0 e :0)
libQt6Pas.so.6 -> libQt6Pas.so.6.2.10
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 is the dynamic linker, ignoring
Tem muito ruído na mensagem acima, mas note a linha libQt6Pas.so.6 -> libQt6Pas.so.6.2.10. Isso
confirma que o sistema agora enxerga a biblioteca. O ldconfig leu o arquivo e criou o link simbólico necessário no
cache. O restante das mensagens são apenas "ruídos" comuns em sistemas Debian/Ubuntu que passaram por atualizações ou
têm arquivos de configuração de biblioteca (.conf) levemente redundantes.
Conclusão
Compilar seus próprios bindings não é apenas uma necessidade técnica às vezes; é um rito de passagem para quem quer ter controle total sobre o ambiente de desenvolvimento. O Lazarus é flexível, e saber como montar essas peças do quebra-cabeça é o que separa o "clicador de botões" do verdadeiro desenvolvedor Pascal.
Agora vá lá e aproveite a elegância do Qt com a rapidez do Pascal!