› Foros › Multiplataforma › Desarrollo
ee-gcc -Wall -c -I/usr/local/ps2dev/ps2sdk/ports/include/SDL "%f"
ee-gcc -Wall -o -I/usr/local/ps2dev/ps2sdk/ports/lib/lib -L/usr/local/ps2dev/ps2sdk/ports/lib/ -L/usr/local/ps2dev/ps2sdk/ports/lib -L/usr/lib/ps2dev/gsKit/lib "%e" -lsdlmain -lsdl -lgskit -lcdvd -lmf -lps2ip "%f"
ee-gcc -Wall -o -I/usr/local/ps2dev/ps2sdk/ports/lib/lib -L/usr/local/ps2dev/ps2sdk/ports/lib/ -L/usr/local/ps2dev/ps2sdk/ports/lib -L/usr/lib/ps2dev/gsKit/lib "prueba" -lsdlmain -lsdl -lgskit -lcdvd -lmf -lps2ip "prueba.c" (en el directorio: /home/snake/Documentos)
prueba.c:2:17: SDL.h: No existe el fichero o el directorio
prueba.c: En la función `main':
prueba.c:5: aviso: declaración implícita de la función `SDL_Init'
prueba.c:5: `SDL_INIT_AUDIO' no ha sido declarado aquí (primero úselo en esta función)
prueba.c:5: (Cada identificador no declarado solamente se reporta una vez
prueba.c:5: para cada funcion en la que aparece.)
prueba.c:5: `SDL_INIT_VIDEO' no ha sido declarado aquí (primero úselo en esta función)
prueba.c:6: aviso: declaración implícita de la función `printf'
prueba.c:6: aviso: declaración implícita de la función `SDL_GetError'
prueba.c:6: aviso: el argumento de formato no es un apuntador (argumento 2)
prueba.c:9: `SDL_Quit' no ha sido declarado aquí (primero úselo en esta función)
Ha fallado la compilación.
#include <stdlib.h>
#include "SDL.h"
int main (int argc, char** argv ) {
if(SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO)<0){
printf("No se puede inicializar SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
return 0;
}
Charlie52 escribió:Desconozco el sistema de build en PS2, pero el compilador parece que te falla por no encontrar SDL.h en el #include. Deberás indicarle al compilador dónde se encuentra ese fichero, que posiblemente por lo que pones estará en /usr/local/ps2dev/ps2sdk/ports/include/SDL
Un saludo.
ee-gcc -c -I/usr/local/ps2dev/ps2sdk/ports/include/SDL "%f"
ee-gcc -Wall -static -o "%e" "%f" -lsdlmain -lsdl -lgskit -lcdvd -lmf -lps2ip -L/usr/local/ps2dev/ps2sdk/ports/lib -L/usr/local/ps2dev/ps2sdk/ports/lib/ -L/usr/lib/ps2dev/gsKit/lib
export PS2DEV=/usr/lib/ps2dev
export PS2SDK=$PS2DEV/ps2sdk
export GSKIT=$PS2DEV/gsKit
export SDL=/usr/local/ps2dev/ps2sdk/ports/include/SDL
export PATH=$PATH:$PROGRAMFILES/Git/bin
export PATH=$PATH:$PROGRAMFILES/Mercurial
export PATH=$PATH:$PS2DEV/bin
export PATH=$PATH:$PS2DEV/ee/bin
export PATH=$PATH:$PS2DEV/iop/bin
export PATH=$PATH:$PS2DEV/dvp/bin
export PATH=$PATH:$PS2SDK/bin
export PATH=$PATH:/usr/local/ps2dev/ps2sdk/ports/include
export CPATH="/usr/local/ps2dev/ps2sdk/ports/include:/usr/lib/ps2dev/ps2sdk/port$
Charlie52 escribió:Ya te digo que estoy un poco a ciegas en PS2, pero estaba leyendo este Makefile https://github.com/ps2dev/ps2sdk-ports/ ... t/Makefile con ejemplos que usa SDL y compila para tener un .elf. Si quieres prueba estos comandos desde la propia línea de comandos donde tengas el prueba.c y luego lo adaptas a tu IDE y a tus variables del entorno. No sea que te este poniendo el fichero en algún otro sitio...
ee-gcc -D_EE -G0 -I/usr/lib/ps2dev/ps2sdk/ee/include -I/usr/lib/ps2dev/ps2sdk/common/include -I/usr/local/ps2dev/ps2sdk/ports/include/SDL -c prueba.c -o prueba.o
ee-gcc: el compilador
-D_EE: el macro _EE que por ejemplo usa SDL para saber que la plataforma es little endian https://github.com/ps2dev/ps2sdk-ports/ ... rder.h#L49
-G0: Sin información para el debugger. La verdad es que no sé cómo será la depuración en PS2.
-I/usr/lib/ps2dev/ps2sdk/ee/include: headers que seguramente use SDL y de la librería C como stdlib.h de tu ejemplo
-I/usr/lib/ps2dev/ps2sdk/common/include: lo mismo
-I/usr/local/ps2dev/ps2sdk/ports/include/SDL: para poder usar SDL.h
-c: indica que solo quieres compilar, no linkear
prueba.c: el fichero C de tu código
-o: salida
prueba.o: el fichero object
Esa era la fase de compilación, es posible que a lo mejor te da algún error si yo me he equivocado en algo...
ee-gcc -mno-crt0 -T/usr/lib/ps2dev/ps2sdk/ee/startup/linkfile -nostartfiles -L/usr/lib/ps2dev/ps2sdk/ee/lib -o prueba.elf /usr/lib/ps2dev/ps2sdk/ee/startup/crt0.o prueba.o -lc -L/usr/lib/ps2dev/gsKit/lib -L/usr/local/ps2dev/ps2sdk/ports/lib -lsdl -lcdvd
ee-gcc: el compilador aunque ahora hace de linker
-mno-crt0: No linkea nada en el crt0.o
-T/usr/lib/ps2dev/ps2sdk/ee/startup/linkfile: el script que linkea para crt0
-nostartfiles: no utilizar el crt0 del sistema, hay que dar uno propio de ps2sdk
-L/usr/lib/ps2dev/ps2sdk/ee/lib: aquí debería estar libc.a para poder linkear con la librería C del propio ps2sdk
-o: salida
prueba.elf: tu fichero ELF
/usr/lib/ps2dev/ps2sdk/ee/startup/crt0.o: linkea con el crt0 del propio ps2sdk
prueba.o: linkea con tu fichero object que anteriormente hemos compilado
-lc: linkea el libc.a
-L/usr/lib/ps2dev/gsKit/lib: no entiendo por qué especifica este directorio si luego no linkea nada con libgskit.a ¿A lo mejor lo puedes quitar sin problemas?
-L/usr/local/ps2dev/ps2sdk/ports/lib: el directorio donde tendrías que tener libsdl.a
-lsdl: linkea la librería libsdl.a
-lcdvd: aquí también tengo mis dudas de si es necesario linkear con libcdvd.a. Posiblemente me equivoque pero parece que SDL se compila incluyendo ya dentro de libsdl.a todas las librerías necesarias como libcdvd.a y libgskit.a ¿Por eso a lo mejor tampoco hay que especificar -lgskit?
A lo mejor falla en algo, pero creo que te puede servir como base para crear tu propio comando para compilar y crear el fichero ELF en el mismo directorio donde tengas el prueba.c, así descartas otros errores del IDE.
Un saludo!