Multilib e Multiarch: Esses dois termos são apenas sinônimos? Se não, como eles diferem?
Se eu quiser executar aplicativos de 32 bits e 64 bits no mesmo sistema, devo chamá-lo de Multiarch ou Multilib?
Multilib e Multiarch: Esses dois termos são apenas sinônimos? Se não, como eles diferem?
Se eu quiser executar aplicativos de 32 bits e 64 bits no mesmo sistema, devo chamá-lo de Multiarch ou Multilib?
São abordagens diferentes para o mesmo problema geral, com escopos um pouco diferentes: executar binários criados para diferentes arquiteturas.
Quando você recebe um binário para executar, você precisa de três coisas: as bibliotecas necessárias (se houver, incluindo seu carregador dinâmico), suporte para as chamadas de sistema que ele faz e a capacidade de interpretar as instruções de máquina que ele contém. Multilib e multiarch endereçam o primeiro.
O Multilib trabalha com uma tabela de variantes conhecidas, por arquitetura. Isso originalmente abordava variantes de ABI, por exemplo , em MIPS, mas seu uso mais comum hoje em dia é o suporte de 32 bits em x86: normalmente define
lib32
como o diretório de biblioteca de 32 bits (e essa definição é específica para x86). Portanto, uma configuração multilib pode fornecer o carregador de 64 bits/lib
e o de 32 bits no/lib32
. No lado do compilador, você especifica-m32
para construir um binário de 32 bits usando multilib.Multiarch é mais geral: suas definições não dependem da arquitetura do host. Todas as bibliotecas são encontradas em um
lib
subdiretório correspondente à sua arquitetura de destino;/usr/lib/x86_64-linux-gnu/
,/usr/lib/i386-linux-gnu
, etc. No lado do compilador, você usa o compilador cruzado apropriado.Qual abordagem você usa para executar um binário de 32 bits depende da distribuição. Debian e seus derivados agora usam multiarch, outras distribuições usam multilib.