Geralmente é melhor compilar na mesma máquina que você quer executar?

6

(Nota: estou usando apenas ffmpeg como exemplo, muitas vezes me perguntei a mesma coisa com outros programas)

Eu tenho um script de compilação para ffmpeg , que compila em suporte para alguns recursos não-padrão. Agora eu quero usar esse codificador em várias outras máquinas. Há algum problema em copiar o executável /usr/local/bin/ffmpeg ou devo preferir executar o script de construção nas outras máquinas?

  • Há probabilidade de haver otimizações dependentes de hardware na compilação?
  • É possível ter alguma dependência oculta que eu também precise copiar, além do próprio executável e qualquer coisa que eu possa encontrar com ldd ?
por wim 26.08.2011 / 10:17

1 resposta

4

sim e sim:)

Se você quiser que seu binário compilado seja executado em várias máquinas, você terá que compilá-lo de uma maneira que corresponda à arquitetura e configuração (biblioteca-sábia) nessas máquinas. isso normalmente significa:

  • vincular tudo o que você puder estaticamente
  • envie as libs para suas necessidades binárias
  • 32 bits são executados em máquinas de 64 bits, mas não o contrário

então, se você não quiser pensar se ele pode ser executado ou se não: compilar e vincular o binário na máquina que você quer que ele seja executado.

    
por 26.08.2011 / 10:33