Generando un ejecutable de Linux con Mono con mkbundle

Generando un ejecutable de Linux con Mono con mkbundle

El archivo AC# en mono se puede compilar mediante gmcsel comando. Esto creará un hello.exearchivo.

$ gmcs hello.cs
$ ls
hello.cs  hello.exe
$ ./hello.exe
Hello from Mono!

Para generar un ejecutable de Linux, probé este comando, pero genera el error:

$ gmcs /t:exe hello.cs /out:hello

Unhandled Exception: System.ArgumentException: Module file name 'hello' must have file extension.

Quiero crear un ejecutable independiente para poder ejecutarlo, simplemente ejecútelo diciendo y obtengo el resultado deseado:

$ ./hello
Hello from Mono!

Busqué y encontré una solución que menciona una herramienta llamadapaquete mk:

$ mkbundle -o hello hello.exe --deps
Sources: 1 Auto-dependencies: True
embedding: /home/ed/Projects/hello_world/hello.exe
embedding: /mono/lib/mono/1.0/mscorlib.dll
Compiling:
as -o /tmp/tmp54ff73e6.o temp.s
cc -o hello -Wall temp.c `pkg-config --cflags --libs mono` /tmp/tmp54ff73e6.o
Done

$ ls -l
total 3
-rwxr-xr-x  1 ed users 1503897 2005-04-29 11:07 hello
-rw-r--r--  1 ed users     136 2005-04-29 11:06 hello.cs
-rwxr-xr-x  1 ed users    3072 2005-04-29 11:06 hello.exe

Esta utilidad no parece existir en mi instalación de Mono. Descubrí que esto está disponible en mono-develpaquete. Instalar este paquete significaba instalar alrededor de otros 82 paquetes. Mi objetivo era mantener mi instalación mono al mínimo hasta algún momento.

¿Hay alguna forma de instalarlo mkbundlede forma independiente?

Respuesta1

Estaba muy impaciente y sentí que el paquete mono-2.0-develpodría tener mkbundle. Así que seguí adelante e instalé mono-2.0-develel cual solo necesitaba 18 paquetes adicionales. Cuando escribí mkby presioné la pestaña, me mostró mkbundle2.

Lo intenté:

$ mkbundle2 -o hello hello.exe --deps
OS is: Linux
Sources: 1 Auto-dependencies: True
   embedding: /home/minato/Projects/Practice/mono/hello.exe
   embedding: /usr/lib/mono/2.0/mscorlib.dll
Compiling:
as -o temp.o temp.s 
cc -ggdb -o hello -Wall temp.c `pkg-config --cflags --libs mono`  temp.o
Done

$ ls
hello  hello.cs  hello.e  hello.exe

$ ./hello
Hello from Mono!

Esto era lo que necesitaba en primer lugar.

Gracias a la command-not-foundherramienta.

información relacionada