Esta mañana me encuentro en MundoGeek un artículo acerca del reciente lenguaje de programación Go, del que ya hablamos ayer. Me ha parecido sumamente interesante lo que comenta sobre cómo probar programar en Go sobre Ubuntu.
Me ha parecido tan curiosa su sencillez (no tanto como Python) que me he lanzado a probarlo, así:
- Lo primero, y antes de comenzar tenemos que compilar las herramientas de trabajo, de esta manera hemos de crear algunas variables de entorno en el fichero .bashrc, teniendo en cuenta que “~” es nuestra ruta de usuario, véase /home/usuario:
nano ~/.bashrc
- Y dentro del editor, añadimos las siguiente líneas, que podremos modificar según nos interese:
export GOROOT=$HOME/go_src
export GOOS=linux
export GOARCH=386
export GOBIN=$HOME/go_bin
export PATH=$PATH:$GOBIN
GOROOT: Mediante esta variable de entorno indicaremos dónde se guardará el código fuente de nuestras aplicaciones.
GOOS: Representa la etiqueta del sistema operativo para el que vamos a crear nuestras aplicaciones, podemos usar las siguientes etiquetas: “linux, darwin (Mac OS X) y nacl (Native Client)”.
GOARCH: Define la arquitectura para la que compilamos, aquí las opciones que tenemos son:”amd64 (64 bits), 386 (32 bits) y arm”.
GOBIN: Esta variable de entorno especifica dónde instalaremos los binarios de Go.
PATH: Aquí especificaremos el directorio en el que se instalarán las herramientas de Go, de esta manera podremos usarlas accediendo por su nombre, como cualquier otra herramienta lanzada desde consola. - Bien, ya tenemos modificado el .bashrc, ahora para aplicar los cambios y nos tener que reiniciar la consola, lanzamos la siguiente orden:
source ~/.bashrc - Una vez configurado nuestro entorno, sin el código fuente ni las herramientas, pasaremos a descargarlo. Dado que el sistema de control de versiones, Mercurial, no viene preinstalado en Ubuntu, lo instalamos nosotros mismos a través de la siguiente orden como superusuario.
sudo aptitude install mercurial
- Ahora sí podemos proceder a descargar el código fuente de Go:
hg clone -r release https://go.googlecode.com/hg/ $GOROOT
- Una vez tenemos el código fuente, el siguiente paso es compilarlo. Para ello necesitaremos instalar varias herramientas:
sudo aptitude install bison gcc libc6-dev ed - Ahora es el momento de compilar nuestro deseado Go:
mkdir $GOBIN
cd $GOROOT/src
./all.bash Cuando esto haya terminado, y si no se ha producido ningún error (afortunadamente no ha sido mi caso), podremos encontrar las herramientas del “mini-entorno” de Go en el directorio definido en la variable de
entorno GOBIN.
- Ahora vamos a escribir nuestro primer programa en Go, el clásico “Holamundo”:
nano holaLinuxHispano.go package main
import “fmt”
func main()
{
fmt.Printf(“Hola mundo desde el Equipo de Linux Hispano\n”);
}
- Guardamos el archivo y llega el momento de compilarlo (y linkarlo al mismo tiempo):
8g holaLinuxHispano.go Si deseamos compilarlo para 64 bits, usaremos el compilador “6g”:
6g holaLinuxHispano.go
- El resultado obtenido será un archivo objeto holaLinuxHispano.8 ó holaLinuxHispano.8, con el código máquina de nuestra aplicación. Para crear el fichero ejecutable (esto es linkar los ficheros objeto) mediante el comando 8l (6l para 64 bits). Así:
8l hola.8
- Terminando, para ejecutar nuestra aplicación, por último:
./8.out
¿Habéis hecho alguna prueba más? Esperamos vuestros comentarios al respecto.
Ver comentarios
Interesante!!
pero...
nano? ... Real programmers... bueno ya sabes que sigue: http://xkcd.com/378/
@Oscar: Muy bueno si señor, aún desconozco cual es el comando para lanzar mariposas con "nano" creo que lo seguiré usando.
Si bien para algo más gráfico recomiendo Geany, que visualmente hablando es una mezcla entre el ya clásico Notepad++ de Windows y el editor de KDE Kate, que funciona las veces de IDE.
Oye gracias por el tutorial. Por otra parte a mi lamenteablemente no me ha funcionado este método.
--- cd ../misc/cgo/stdio
rm -rf *.[568vqo] *.a [568vq].out *.cgo[12].go *.cgo[34].c *.so _obj _test _testmain.go hello fib chain run.out
cgo file.go
could not determine kind of name for C.puts
could not determine kind of name for C.CString
could not determine kind of name for C.fflushstdout
could not determine kind of name for C.free
failed to interpret gcc output:
cc1: warnings being treated as errors
cgo-test: En la función ‘f’:
cgo-test:0: error: declaración sin efecto
cgo-test:1: error: declaración sin efecto
cgo-test:2: error: declaración sin efecto
cgo-test:3: error: declaración sin efecto
make: *** [file.cgo1.go] Error 2
que crees que pueda ser...
mi SO es ubuntu jaunty (lo tengo bajo windows). Será ese el problema?. En todo caso estaré pendiente de tu respuesta.