¿Debo comstackr de forma cruzada mi progtwig cuando mi objective es 64 bit arch? y el host es de 32 bits de arco de la familia x86?

Tengo un escenario en el que
mi server es: procesador x86 de 32 bits
mi objective es: x86 procesador de 64 bits

Tengo un par de preguntas :

  • Quiero saber si puedo simplemente comstackr un progtwig en mi host utilizando el gcc disponible y ejecutarlo en el destino.
  • ¿Debo cruzarlo para comstackrlo para un procesador x86 de 64 bits? En caso afirmativo, ¿cómo puedo especificarlo durante la compilation?
  • ¿Debo usar una cadena de herramientas separada para comstackr de forma cruzada el progtwig?

Todos los procesadores amd64 (es decir, 64 bits x64) pueden ejecutar binarys x86 de 32 bits. Además, en la mayoría de los sistemas operativos, puede ejecutar progtwigs x86 en un sistema operativo amd64. Por lo tanto, a menudo es posible implementar binarys x86 en procesadores AMD64.

Si es deseable hacerlo es una cuestión diferente. Los sistemas operativos de 64 bits a menudo vienen con un set restringido de bibliotecas de 32 bits, por lo que si su progtwig utiliza algunas bibliotecas poco comunes, será más fácil instalar un ejecutable de 64 bits. Dependiendo de su aplicación, puede haber o no una ventaja de performance para los binarys de 32 bits o de 64 bits.

Si decide que desea implementar ejecutables de 64 bits, necesitará un entorno de compilation cruzada para la architecture amd64 (aka x86_64) que se ejecuta en una architecture x86. Esto significa tanto un comstackdor como bibliotecas estáticas para enlazar.

Una installation de gcc puede compartir interfaces e include múltiples backends. Pero no muchas distribuciones se envían con las herramientas de desarrollo amd64 en las plataforms x86, por lo que es posible que tenga que get las suyas propias (gcc es bastante sencillo para la compilation cruzada). Lo mismo ocurre con las bibliotecas para enlazar (por supuesto, una vez que tenga el comstackdor, puede recomstackrlo desde la fuente).

Como ejemplo, Ubuntu 10.04 en x86 viene con una versión "multilib" de gcc y un back-end amd64, más un pequeño set de packages de desarrollo de 64 bits ( libc6-dev-amd64 Install libc6-dev-amd64 http: // bit. ly / software-small y packages dependientes y dependientes).

sí puede: simplemente especifique las opciones correctas de comnpiler y listo. No podrá ejecutar el binary resultante en su host de 32 bits.

Creo que necesitas: CFLAGS = -m64 también necesitarás establecer LD_LIBRARY_PATH y similar a los encabezados y bibliotecas de 64 bits para tus dependencies.

stackoverflow tiene una pregunta con más respuestas.