PDA

Ver la versión completa : Como compilar desde cygwin



newage
04/12/2005, 20:37
Todo sea por hacer las cosas distintas a los demás... xD. Además es sencillo.

Cygwin es un "simulador" q no "emulador" de linux.
Y es apto para linuxeros y gente rara que programa en el cmd de windows como Rylhe.

1º) Descargar cygwin: http://www.cygwin.com/
- Darle al setup y descargar cygwin con el paquete devel y los extras q querais meter.
- Nota: ocupa mucho: dejarlo instalar por la noche e iros a la cama.

2º) Descargar la ultima versión del devkit de winterMute:
- Link: devKit (http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=150769&release_id=372792)
- Instalar en /cygwin/.
- Saldrá en ences /cygwin/devkitGP2X.

3º) Bajar las gp2xlibs: http://gp2x.org/gp2x/libs/gp2xlibs.tar.gz
- Extraer la carpeta lib de las gp2xlibs en /cygwin/devkitGP2X/lib y lo mismo para los includes...
pero en la carpet includes ehh torpes... [wei4]

4º) Reiniciar el ordenador.


5º) Compilar con arm-linux-gcc, arm-linux-as, etc... desde la consola de cygwin.

Así es como lo estoy haciendo yo. Espero que os sirva de ayuda.

Makefile

#----------------------------------------------------------------------------------------------
# Makefile for test1 by newage
#----------------------------------------------------------------------------------------------
CC1 = arm-linux-gcc
AR1 = arm-linux-ar rc
RANLIB1 = arm-linux-ranlib
STRIP1 = arm-linux-strip
#----------------------------------------------------------------------------------------------
INCLUDES = -I "F:/cygwin/devkitGP2X/include/SDL" -I "F:/cygwin/devkitGP2X/include" \
-I "F:/cygwin/devkitGP2X/arm-elf/include"
#----------------------------------------------------------------------------------------------
LIBS = -lc -lgcc -lm -lg -static -lpthread -lSDLmain -lSDL
#----------------------------------------------------------------------------------------------
CFLAGS = -O2 $(INCLUDES) -Uunix
#----------------------------------------------------------------------------------------------
OBJS = main.o
#----------------------------------------------------------------------------------------------
test1.gpe: $(OBJS)
$(CC1) $(OBJS) -L"F:/cygwin/devkitGP2X/lib" $(LIBS) -Uunix -o test1.gpe
$(STRIP1) test1.gpe
#----------------------------------------------------------------------------------------------
main.o: main.c
$(CC1) -c $(CFLAGS) $< -o $@
#----------------------------------------------------------------------------------------------
uninstall: $(OBJS) test1.gpe
rm $(OBJS) test1.gpe
#----------------------------------------------------------------------------------------------
clean: $(OBJS)
rm $(OBJS)
#----------------------------------------------------------------------------------------------

main.c

#include "SDL.h"

#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define SCREEN_DEPTH 8

int main(int argc, char *argv[])
{
SDL_Surface *screen;
Uint8 *p;
int x = 10; //x coordinate of our pixel
int y = 20; //y coordinate of our pixel

/* Initialize SDL */
SDL_Init(SDL_INIT_VIDEO);

/* Initialize the screen / window */
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE);

int iy;
for(iy = 0; iy < 10; iy++)
{
int ix;
for(ix = 0; ix < 10; ix++)
{
/* Make p point to the place we want to draw the pixel */
p = (Uint8 *)screen->pixels + (y+iy) * screen->pitch + (x+ix) * screen->format->BytesPerPixel;

/* Draw the pixel! */
*p=0xff;
}
}

/* update the screen (aka double buffering) */
SDL_Flip(screen);
while(1);
}


Para salir correctamente hay que incluir:


#include <unistd.h>


y al final, antes de salir



chdir("/usr/gp2x"); execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);Gracias al wiki y a miq01 por todo!

Ya rula perfecto, y lo hace igual q el resto de la gente xD. Objetivo fallido [wei4]. No me pegeis xD.
Pero mirandolo por el lado bueno, me ha salido un tutorial paso a paso cojonudisisisimoo :babea:

:brindis:
http://www.gnuarm.com/armcore.gif

Parece mas grande en las fotos de lo que es xD.
Podeis ver el cursor de SDL y un cuadradito blanco.

WinterN
04/12/2005, 23:04
Descargar la ultima versión de gnuarm para cygwin (La 4.0 por ejemplo):
- Link: http://www.gnuarm.com/
- Instalar en /cygwin/.
- Saldrá en ences /cygwin/GNUARM.


Va ser este paso el que me faltaba... voy a probarlo ahora mismo :brindis:

Estaba intentado tirar del devkit + cygwin, pero me hacía cosas raras.

EDITO: ¿El paso 4º no es necesario si ya tengo el Cygwin instalado de antes, no?

miq01
04/12/2005, 23:20
Por favor, si podéis, confirmad si así tiran SDL_image y SDL_mixer.

newage
04/12/2005, 23:27
Va ser este paso el que me faltaba... voy a probarlo ahora mismo :brindis:

Estaba intentado tirar del devkit + cygwin, pero me hacía cosas raras.

EDITO: ¿El paso 4º no es necesario si ya tengo el Cygwin instalado de antes, no?
Para que se actualice "path" tras compilar el gnu-arm hay que actualizar.

Voy a compilar un ejemplo a ver si tira. PD: No me va con SDL.
Voy a probar una cosa y os cuento.

Ya he compilado lo que quería pero como todo el mundo xD. Edito la cabecera.

Puck2099
05/12/2005, 02:27
Por favor, si podéis, confirmad si así tiran SDL_image y SDL_mixer.

SDL_mixer yo no he conseguido que funcione (compila y linka, pero luego no suena nada...), pero SDL_image me funciona perfectamente :)

Pásate por aquí (http://www.gp32spain.com/foros/showthread.php?t=24955&page=2) que he puesto un archivo y todo para que veas qué bien tira el SDL_image :)

Saludos

miq01
05/12/2005, 02:46
Gracias, Puck2099. Pero he probado a añadir lo de "-lSDL_image -lpng -lz -ljpeg" y en XP no funciona (de momento me da palo ponerme en Linux). Sigo con los "undefined references". Com ejemplo:

C:/devkitGP2X/lib\libSDL_image.a(IMG_png.o): In function `IMG_isPNG':
IMG_png.c:(.text+0x60): undefined reference to `png_sig_cmp'
C:/devkitGP2X/lib\libSDL_image.a(IMG_png.o): In function `png_read_data':
IMG_png.c:(.text+0xa8): undefined reference to `png_get_io_ptr'
Esto lo estuve probando ya hace días, cambiando de orden las librerías y no hubo manera...

De todas formas, lo de no poder usar SDL_Image lo he medio arreglado utilizando SDL a secas, así que de momento ya me está bien. Lo que aún no sé cómo arreglar es lo de SDL_Mixer. Compila, enlaza, y cuando ejecuto se queda la pantalla en negro, y sólo llamo a "Mix_OpenAudio" y "Mix_CloseAudio" (o como sea, que no recuerdo los nombres exactos). Estoy esperando respuesta en GP32x...

Por cierto, ¿los gráficos del LadyKiller son tuyos? Están muy bien... :)

newage
05/12/2005, 03:14
Por cierto, ¿los gráficos del LadyKiller son tuyos? Están muy bien... :)
Son de NeoStalker, el señor del lado oscuro de este foro.

Puck2099
05/12/2005, 03:18
Son de NeoStalker, el señor del lado oscuro de este foro.

Que va, los gráficos son ripeados del juego original (algunos modificados por mi para cambiar el aspecto de vertical a horizontal) y las tías pilladas de aportaciones varias :)

Saludos

newage
05/12/2005, 03:39
Que va, los gráficos son ripeados del juego original (algunos modificados por mi para cambiar el aspecto de vertical a horizontal) y las tías pilladas de aportaciones varias :)

SaludosYa me ha timao. Pues colaboraría en orto juego tuyo ahora no me acuerdo.. :loco:

Por cierto:
Yo ya he compilado el open transport tycon deluxe.
Ahora que funcione ya es otra cosa. Por si alguien quiere colaborar voy a
reimplementar el interface del juego para la GP2X cuando tenga unos sources
estables los cuelgo por aquí.