Es un archivo ejecutable binario portátil

Después de comstackr un progtwig en C, ¿puedo tomar el archivo ejecutable binario y ejecutarlo en otro sistema donde no hay un gcc cargado, como una caja de Ubuntu?

Parcialmente cierto Sí, no necesita el comstackdor en sí, pero necesita la biblioteca C runtime. De todos modos, tanto el comstackdor de C como el tiempo de ejecución de C son parte de POSIX, por lo tanto, no encontrará un sistema Unix sin ellos.

Técnicamente: sí, pero use un enlace estático si necesita la máxima portabilidad


Hablando estrictamente, no necesita gcc, pero puede necesitar varias bibliotecas. De manera predeterminada, los procesadores de idioma producen binarios enlazados dinámicamente que requieren un amplio soporte de tiempo de ejecución en forma de bibliotecas, y las versiones compatibles se deben encontrar en el sistema de destino que se pueden sustituir por las que se enlazaron en el host de desarrollo.

Esto requiere que el destino sea una versión similar del mismo sistema operativo, por ejemplo, linux a linux. Hay problemas más sutiles de sesgo de versión. En Windows, esto se conoce como DLL-hell .

Puede aislarse de muchas de estas preocupaciones mediante enlaces estáticos . Esto hará que el archivo ejecutable sea más grande y no compartirá más la memoria (excepto con instancias adicionales de sí mismo), pero el progtwig podrá sobrevivir a un sesgo de la versión de destino.

gcc comstack C en código de máquina, esto significa que el código solo se ejecutará en la misma architecture para la que fue comstackdo. Además, normalmente hay algunas dependencias a otros binarios (por ejemplo, C-runtime, posix, Win32), por lo que si comstack un progtwig en Ubuntu, se ejecutará en Ubuntu incluso si no tiene gcc instalado pero no se ejecutará en Windows u otros. Unixes (como Solaris o HPUX).

Aquí es donde C es diferente de Java y C # donde el código se comstack en un código de máquina virtual y se ejecuta en cualquier sistema que tenga este tiempo de ejecución de lenguaje (JVM / CLR). Otros lenguajes portátiles son lenguajes de script (Perl / Python / JavaScript) donde el script puede ejecutarse en cualquier lugar donde haya un intérprete.

Siempre que sea la misma architecture y tenga las mismas bibliotecas de tiempo de ejecución, debería funcionar bien. Por ejemplo, comstackr un progtwig en Linux de 32 bits no se ejecuta en Windows de 64 bits, pero si comstack un progtwig en Ubuntu y luego lo pone en otra máquina de Ubuntu, debería funcionar bien.

Depende de las plataformas y librerías instaladas en la plataforma. Es probable que un ejecutable comstackdo tenga dependencias de biblioteca vinculadas dinámicamente en, por ejemplo, libc , y cualquier otra cosa a la que se haya vinculado durante la comstackción.

¿Qué plataformas / comstackdores están involucrados y a dónde quieres mover este binario?