Compilar e Trazer dependências. Ou seja, o Binário completo! Linux [RESOLVIDO]

1. Compilar e Trazer dependências. Ou seja, o Binário completo! Linux [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 01/06/2020 - 22:24h

Problema: Qdo eu compilo um programa ele roda normalmente no MEU PC, mas se eu levo esse binário para outro PC, ele não funciona, porque reclama de libs que no outro PC não tem!

Então como eu faço para que meu binário seja portable? Eu não tenho nenhuma idéia de como fazer isso! Porém existem Desenvolvedores que colocam seus binários em uma pasta, e nessa pasta existe tudo que é necessário para ele rodar independentemente do PC.

Eu gostaria de saber como eu posso fazer isso. Inicialmente sei que meu programa depende da biblioteca FLTK e wxWidgets que estão instaladas no meu PC.
É possível eu saber o que preciso pegar do meu sistema para colocar na pasta do meu Binário?
Como faço isso? Como isso é feito? Como sei de verdade o que meu programa precisa para funcionar?




  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/06/2020 - 17:12h

O jeito mais fácil é compilar o binário estaticamente, utilizando a opção -static do gcc/g++ ou -Bstatic do ld.

Note que algumas bibliotecas podem ter uma licença que não permita o uso de bibliotecas estáticas. A versão gratuita do Qt é um exemplo de tal restrição.

Outra opção é você distribuir as bibliotecas de que seu sistema depende junto com ele. Para tanto, na hora de produzir o executável, você deve instruí-lo sobre onde deve procurar as bibliotecas dinâmicas. Há algumas mensagens minhas aqui no fórum que falam sobre como fazer isso, entre as quais eu destaco as seguintes:

https://www.vivaolinux.com.br/topico/C-C++/Criando-e-instalando-bibliotecas-dinamicas-e-estaticas-no...
https://www.vivaolinux.com.br/topico/C-C++/Problema-ao-compilar-com-Makefile
https://www.vivaolinux.com.br/topico/C-C++/Como-instalar-uma-biblioteca-compartilhada-no-Ubuntu


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

3. Re: Compilar e Trazer dependências. Ou seja, o Binário completo! Linux [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 05/06/2020 - 17:26h

paulo1205 escreveu:
O jeito mais fácil é compilar o binário estaticamente, utilizando a opção -static do gcc/g++ ou -Bstatic do ld.

Outra opção é você distribuir as bibliotecas de que seu sistema depende junto com ele. Para tanto, na hora de produzir o executável, você deve instruí-lo sobre onde deve procurar as bibliotecas dinâmicas. Há algumas mensagens minhas aqui no fórum que falam sobre como fazer isso, entre as quais eu destaco as seguintes:

https://www.vivaolinux.com.br/topico/C-C++/Criando-e-instalando-bibliotecas-dinamicas-e-estaticas-no...
https://www.vivaolinux.com.br/topico/C-C++/Problema-ao-compilar-com-Makefile
https://www.vivaolinux.com.br/topico/C-C++/Como-instalar-uma-biblioteca-compartilhada-no-Ubuntu
Obrigado pelos links, eu vou estudar isso e tentar fazer!

Note que algumas bibliotecas podem ter uma licença que não permita o uso de bibliotecas estáticas. A versão gratuita do Qt é um exemplo de tal restrição.
Outra infomação extremamente útil e importante, obrigado!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts