Quando você compila um binário, digamos, nginx
do código-fonte, ele é construído com informações sobre quais versões das bibliotecas estão no sistema que está compilando os binários. As bibliotecas para referência, é claro, são determinadas pelos argumentos (para nginx
, essa é a definição de quais módulos você quer ativar ou não). Mas esse binário que você construiu será (improvável) executado em um sistema separado, a menos que seja um sistema configurado de forma idêntica.
Você vai querer compilar o aplicativo em cada sistema individual, é (relativamente) improvável que você seja capaz de portar a versão compilada para outro sistema que possa não ter uma versão compatível de cada biblioteca.
Nota: Enquanto você pode obter um binário para portar para outro sistema Linux, é mal aconselhado e geralmente é demorado. Isso é porque:
(1) Você precisa ter certeza de que o sistema para o qual você está movendo seu binário está usando a mesma versão de libc
que foi usada para compilar os binários.
(2) Você precisa ter certeza de que as bibliotecas usadas dentro do programa podem ser facilmente detectadas em seu sistema, e que elas são as mesmas (ou compatíveis) versões que foram usadas para criar o programa.
... e, claro, outras variáveis a considerar. É mais fácil, a longo prazo, compilar o programa em cada sistema para usá-lo, em vez de tentar se esforçar para a portabilidade.