Compilar y ejecutar C en terminal linux Sublime Text

Antes de nada debes tener el compilador de C llamado gcc, normalmente linux lo trae por defecto así que para probarlo abre una terminal y escribe "gcc", si no lo tienes, instálalo.


Lo primero es crear el sublime-build como ya sabemos en Tools->Build System->New Build System..., con el siguiente contenido:
{
    "cmd": ["~/Documentos/runC.sh ${file_path}/${file_name} ${file_path}/${file_base_name}"],
    "shell": true
}
Este lo podemos guardar con el nombre runC.sublime-build en la carpeta que Sublime Text nos abre por defecto.

Lo siguiente es crear el script con el siguiente nombre "runC.sh" en tu carpeta personal, en Documentos, con el siguiente contenido:
#!/bin/bash
gnome-terminal -e "/bin/bash -c 'gcc $1 -o $2; $2; echo; read -p 'Pulse_intro_pasa_salir...'; exit; exec /bin/bash'; &"
Y para finalizar debemos dar los permisos de ejecución al script como viene explicado en esta entrada Ejecutar en Terminal linux desde Sublime Text.

Y ya está todo listo, tan solo selecciona el Build System "runC" en Sublime Text, y al presionar Ctrl + b nuestros programas en C se ejecutarán y se mostraran en un terminal.

Comentarios

  1. Tu página es muy buena... ¿Has trabajado con la libreria Tiff para C/C++? ¿Cómo se configura para usarla con DevC++ de Orwel 5.4.2? Me podrías ayudar?

    ResponderEliminar
  2. Para serte sincero soy bastante novatillo en C++ o C, así que ni conocía esa biblioteca, tan solo he encontrado algo de información al respecto, pero nada de como configurara DevC++, te pongo el enlace por si te es de utilidad.
    https://www.ibm.com/developerworks/linux/library/l-libtiff/

    Saludos.

    ResponderEliminar
  3. Buenas! Estoy intentando hacer esto mismo pero en Mac, me harías el inmenso favor de adaptarlo para que funcione con el terminal de Mac OS? Yo no sabría ni por dónde empezar...
    Un millón de gracias!

    ResponderEliminar
  4. Hola, estaba considerando utilizar Sublime en parte por su bajo consumo, y tus entradas han terminado de definir eso. Lo utilizo en Manjaro Linux, una distro basada en Arch y por el eso el scrip no funciona ya que no la orden de la segunda linea del mismo "gnome-terminal -e" no tiene validez, yo uso el escritorio xfce. Espero me puedas ayudar con este problema.

    Gracias de todas formas por dedicar tiempo a hacer estas entradas y ayudar a otros usuarios.

    ResponderEliminar
  5. En lugar de usar el terminal que trae mi distro instale el emulador de gnome-terminal y ya funciona :)

    ResponderEliminar
    Respuestas
    1. Me alegro que hayas encontrado la solución, yo llevo varios años trabajando con Sublime Text, y aunque siempre tengo varios IDEs instalados como Web Storm o Netbeans, casi siempre acabo usando Sublime Text para todo.

      Saludos.

      Eliminar
  6. Muy Bueno.
    Ejemplos: http://tupagina.comuf.com/

    ResponderEliminar
  7. Buenos dias, gracias por el tutorial, muy bien explicado y sobre todo util.
    Pero hice los pasos y obtuve este error al compilar:
    home/juan/Documentos/runC.sh: línea 2: gnome-terminal: no se encontró la orden
    [Finished in 0.0s with exit code 127]
    [cmd: ['~/Documentos/runC.sh / /']]
    [dir: /opt/sublime_text]
    [path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

    me podría ayudar por favor? gracias

    ResponderEliminar
    Respuestas
    1. Tienes que ir a tu termial y en Ayuda -> Acerca de mirar la distribucion de la terminal. A mi me salio que era mate de modo que el comando tiene que ser "mate-terminal" en lugar del que pone aqui.

      Eliminar
  8. En la version 3 de Sublime Text, me sirvio en Elementary OS cambiando a pantheon-terminal

    ResponderEliminar
  9. Hago todo lo que dice pero cuando compilo y y ejecuto sale esto en la terminal:

    /usr/bin/ld: no se puede abrir el fichero de salida /: Es un directorio
    collect2: error: ld returned 1 exit status
    &: /: Es un directorio

    Pulse_intro_pasa_salir...

    y esto en la consola de Sublime Text:
    (gnome-terminal:6820): GLib-GIO-CRITICAL **: g_settings_get: the format string may not contain '&' (key 'monospace-font-name' from schema 'org.gnome.desktop.interface'). This call will probably stop working with a future version of glib.

    (gnome-terminal:6820): Vte-2.90-WARNING **: No se pueden convertir caracteres de UTF-8 a actual.
    Unhandled value type TerminalEncoding of pspec encoding


    Que problema es? soy novato jeje

    ResponderEliminar
  10. Hola , estoy viendo tu info actualmente tengo debían y ya tengo instalado sublime text 2 uso KDE 4 y a veces GNOME como sería el procedimiento para hacerlo andar en KDE 4? Gracias...

    ResponderEliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  13. buenicimo,era lo que estaba buscando . cambiando el comando que le pasamos a la terminal, en el segundo script, sirve para python, java o el que sea

    ResponderEliminar
  14. Tengo el problema siguiente:
    /home/Antonio/Documentos/runC.sh: línea 2: mate-terminal: no se encontró la orden
    [Finished in 0.0s with exit code 127]
    [cmd: ['~/Documentos/runC.sh /home/Antonio/Descargas/HolaMundo.c /home/Antonio/Descargas/HolaMundo']]
    [dir: /home/Antonio/Descargas]
    [path: /home/Antonio/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games]
    Alguien me puede decir como lo solucionó por favor?

    ResponderEliminar
  15. Yo uso Archlinux con Xfce
    tuve que hacer algunas modificaciones para que corra y funcionara
    Primero debes identificar que shell usas y terminal
    "echo $SHELL" (para saber la shell) y para saber la terminal con "echo $TERM"
    Sin comillas

    Luego de eso configure y me quedo

    En sublime text:
    {
    "cmd": ["~/Documentos/runC.sh ${file_path}/${file_name} ${file_path}/${file_base_name}"],
    "shell": true
    }


    el script:

    #!/bin/zsh
    xfce4-terminal -e "/bin/zsh -c 'gcc $1 -o $2; $2; echo; read -p 'Pulse_intro_pasa_salir...'; exit; exec /bin/zsh'; &"

    Ojala le ayude alguien :D

    ResponderEliminar
    Respuestas
    1. Y me olvidaba que para darle permisos totales es con el comando chmod 700

      En pocas palabras quedo

      chmod 700 /home/alv/Documentos/runC.sh

      "alv" es mi usuario

      Eliminar
  16. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  17. LINUX! COMPILING AND RUNNING IN TERMINAL, LANGUAGE C
    Create a new Build System and paste this code:

    {
    "cmd": ["xterm-256color -e 'zsh -c \"gcc $file_name -o ${file_base_name} && ./${file_base_name} ;echo;echo Presiona ENTER para salir...; read line\"'"],
    "selector" : "source.c",
    "shell": true
    }

    > echo $SHELL = To know which shell you use (zsh)-------------------------------------------------------------echo $TERM = To know which terminal you use (xterm-256color)-------------------------------------------

    Espero ayudado :D

    ResponderEliminar
  18. Buenas e agregado lo que mencionas en mac pero lamentablemente me aparece el siguiente rror:

    /bin/sh: /Users/JARV/Documentos/runC.sh: No such file or directory
    [Finished in 0.0s with exit code 127]
    [cmd: ['~/Documentos/runC.sh /Users/JARV/Documents/holamundo.c /Users/JARV/Documents/holamundo']]
    [dir: /Users/JARV/Documents]
    [path: /usr/bin:/bin:/usr/sbin:/sbin]

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA

Calcular factorial de un numero en JAVA