PDA

Ver la versión completa : Programar para la caanoo en Ubuntu



Jurk
06/09/2011, 13:48
BUeno, como dice el titulo esto va de como programar para Caanoo en Ubuntu.

Desde mayo uso casi exclusivamente ubuntu, a windows no le hago ni caso, ya que me gusta mucho el nuevo escritorio de Gnome. Por lo tanto tengo un poco apartado el tema de programar para la caanoo, pero me gustaria recuperarlo. Ya me monte mi entorno con codeblocks para win siguiendo el tuto de hardyx... Y ahora lo quiero para ubuntu. ¿Alguien me puede hchar una mano (al cuello)?

:brindis:

juanvvc
06/09/2011, 14:55
Pues si ya lo hiciste en codeblocks para win, en codeblocks para linux es igual ;)

La única diferencia es que donde en win ponías "c:\openwiz" ahora tendrás que poner (probablemente) "/opt/openwiz"

hardyx
06/09/2011, 20:06
Por suerte CodeBlocks es multiplataforma, solo tienes que instalar el toolchain, crear un nuevo perfil para Caanoo y apuntar a los directorios correctos.

Jurk
07/09/2011, 00:37
@HARDYX
en tu tuto (http://www.gp32spain.com/foros/showthread.php?t=78315&highlight=toolchain+caanoo), en la parte de crear plantilla... no tengo Gp2x_template.cbp.

Una posible solucion?

bitrider
07/09/2011, 07:52
Yo prefiero tirar de gedit y makefiles.

Jurk
07/09/2011, 09:04
Yo prefiero tirar de gedit y makefiles.

vale, no se usar makefiles:brindis:
alguien me enseña?
Alguien me dice donde encontrar un buen tuto?

juanvvc
07/09/2011, 10:34
La idea básica de los Makefiles es que son como un .bat. Tienen varias secciones, y dentro de cada sección el grupo de comandos que quieras ejecutar:



seccion1:
comando1
comando2
comando3
seccion2:
comando1
comando2
seccion3: seccion2
comando5
comando6


(los espacios al inicio de las líneas son tabuladores. Obligatoriamente)

Ese archivo lo guardas como Makefile y ya está. Para ejecutar la seccion1 escrines "make seccion1". Para ejecutar la seccion3, escribes "make seccion3". Fíjate que donde se define la seccion3 se indica de qué secciones depende: en este caso de seccion2, así que "make seccion3" ejecutará antes "seccion2".

Si pones "make", sin más, se ejecuta la primera sección. Por tradición la primera sección se llama "all", pero es una tradición que no tienes por qué seguir.

Las seccions y sus dependencias pueden ser archivos reales. Por ejemplo:



programa: main.o funciones.o
gcc -o programa main.o funciones.o
main.o: main.c
gcc -c main.c
funciones.o: funciones.c
gcc -c funciones.c


programa depende de main.o y funciones.o, y estos a su vez de main.c y funciones.c. Si modificas funciones.c, se compilará funciones.o y programa, pero no main.o. Y así.

Las secciones pueden usar wildcards. "%.o" es una sección para crear archivos .o. El código de arriba puede escribirse también de forma equivalente:



programa: main.o funciones.o
gcc -o programa main.o funciones.o
%.o: %.c
gcc -c %<


%< significa "el archivo que ha hecho saltar la regla"

Puedes usar variables. Siguiendo con el mismo ejemplo de Makefile:



CC=gcc
CFLAGS=-O -Wall
OBJS=main.o funciones.o

all: $(OBJS)
$(CC) -o programa $(OBJS)
%.o: %.c
$(CC) $(CFLAGS) -c %<


Además, hay algunas secciones que se usan tanto que no es necesario escribirlas. Por ejemplo, la de "%.o: %.c": no la escribas, make ya supone que está:



CC=gcc
CFLAGS=-Wall -O
OBJS=main.o funciones.o

all: $(OBJS)
$(CC) -o programa $(OBJS)


(recuerda que la sección implícitamente declarada para compilar código C va a usar la variable $(CC) para el nombre del compilador, y $(CFLAGS) para las opciones del compilador.

Y ya está, no tienes que saber más de Makefiles.

swapd0
07/09/2011, 10:35
Hay un libro de O'really sobre los makefiles, yo aprendí de ahí... pero ya se me ha olvidado todo XD

hardyx
07/09/2011, 18:20
Con un IDE como Codeblocks no es necesario usar makefiles, aunque sea bueno conocerlos. Aunque no tengas la plantilla de GP2X puedes crear un perfil a mano, de hecho hay un mini tutorial de GPH para configurarlo en el SDK.

Este manual sobre makefiles está muy bien:
http://macprogramadores.org/documentacion/make.pdf