Estou desenvolvendo um aplicativo multi-plataforma e estou tendo problemas com a distribuição de um binário do Linux. No Windows, as dll foram -libsndfile-1.dll lua5.1.dll lua51.dll openal32.dll sfml-audio.dll sfml-graphics.dll sfml-network.dll sfml-system.dll sfml-window.dll
Este é um pré-lançamento muito cedo, então eu não quero escrever um pacote. Estou interessado apenas em fazer com que o usuário faça o download de um tarball e execute o binário dentro dele. Quais são as maneiras típicas para os usuários obterem essas dependências no Linux, sem escrever um pacote?
PS Também tenho Linux 64-bit, e um usuário relatou que o aplicativo não foi executado em seu Linux de 32 bits. Qual poderia ser o problema? Eu não tive esse problema com o Windows (construído em um sistema de 64 bits, funciona em 32 bits).
Respostas:
Não tenho certeza se isso é exatamente o que você está procurando, mas normalmente o que é feito para os programas Linux é que você lista as dependências na página da web onde você oferece o produto para download. No seu caso, algo como
(Obviamente, especifique os números de versão também, se o seu programa só funciona com certas versões). Então, um usuário Linux checaria seu gerenciador de pacotes para ter certeza de que eles tinham todos aqueles antes de tentar instalar o seu programa.
Alguns programas são distribuídos da maneira que Ignacio explicou, ou seja, incluem todas as dependências que você precisa dentro do arquivo que você distribui. Isso tende a incomodar algumas pessoas, porque elas estão presas a cópias extras das bibliotecas que não podem ser atualizadas e podem até entrar em conflito com as versões do sistema.
fonte
Você pode vincular estaticamente o programa a todas as bibliotecas, exceto libc e libm. (Heck, você pode até mesmo ligar neles).
fonte
O equivalente no Linux é incluir os arquivos .so em um diretório dentro do pacote e ter um shell script definido
$LD_LIBRARY_PATH
para apontar para esse diretório e, em seguida, executar o executável binário.O problema com 32 x 64 é que o compilador gera código de 64 bits e vincula-se a bibliotecas de 64 bits. Você precisará instalar um conjunto de ferramentas de 32 bits para criar um binário de 32 bits. Você pode executar
file
os vários binários para confirmar isso.fonte
Você pode obter as dependências de um binário usando o comando ldd
Por exemplo :
Mas é melhor compartilhar como fonte, pois as libs podem ser de versões diferentes com símbolos diferentes ou de arquitetura diferente.
fonte