Existem três maneiras de lidar com esse tipo de problema.
-
Você pode criar
nix
estaticamente; então, não precisará de um vinculador dinâmico em tempo de execução e funcionará praticamente em qualquer lugar. (Isso também lida bem com problemas de compatibilidade de bibliotecas.) -
Você pode construir
nix
várias vezes, uma vez por libc alvo - realisticamente, no Linux, GNU libc e musl ( talvez dietlibc também). Isso lhe dará binários que você pode usar conforme apropriado, dependendo da libc do ambiente de destino. Eu não sei sobre o Alpine Linux, mas isso é possível, por exemplo, no Debian; você cria usando o compilador padrão para criar com o GNU libc e instala o pacotemusl-dev
e compila commusl-gcc
para o alvo. -
Você pode especificar as dependências de qualquer binário que você faça decidir construir e instalá-las no ambiente de destino. Por exemplo, um binário baseado em musl baseado no Alpine será mais fácil de executar em um derivado Debian se você instalar o pacote
musl
lá.