Bien... supongo que quien tenga una PSP y tenga espíritu aventurero (o firmware 1.50) habrá pensado alguna vez hacerse un programita para la PSP... ver su "creación" en semejante aparatejo. Si tenéis una importante empresa y mucho dinero tal vez podáis pedir el SDK oficial a Sony y si a ellos les apetece, poder formar parte de los elegidos capaces de crear pequeñas joyas portables para disfrute de todos (o unos pocos). Por el contrario, si lo único que queréis es sacar el máximo partido posible a algo vuestro, usándolo como más os guste y sin tener que gastaros otra fortuna gracias al software libre (que, además, es gratuito), necesitaremos un SDK... no tan oficial como el de Sony pero que nos permitirá realizar nuestras propias aplicaciones. Eso vamos a intentar, configurar e instalar nuestro propio SDK (o homebrew como se conoce coloquialmente a este tipo de SDK's no oficiales).
Bien, a partir de ahora llamaremos scene al estado del arte del homebrew, no por hacernos los "guays" sino porque en google obtendréis mejores resultados con "psp scene" que con "psp estado del arte". O dicho de otro modo: así se le llama a este mundillo.
Actualmente disponemos de un completo toolchain para las psp. Esto nos permitirá usar la potencia del gcc para crear ejecutables para nuestras consolas.
Además de programar en C, se han creado intérpretes de LUA y de python por lo que podremos empezar a crear programillas sin tener que meternos de lleno con el gcc. Además se han portado muchas librerías a LUA como por ejemplo SDL, etc. El python también está cada vez menos "verde", etc. De todas formas, aquí explicaremos como instalarnos el pspsdk homebrew, con lo que obtendremos el gcc-psp y los intérpretes de LUA y python así como muchas librerías interesantes tipo SDL. Vamos al trabajo!
Esto es lo primero y lo principal... sin esto no podemos empezar a hacer nada, nos bajaremos el repositorio de todo el SDK completo que, entre otras cosas, incluye estos scripts (yo uso el normal... no el "sudo"... bastantes emociones tengo ya... ;-)). Antes de instalarlo debemos asegurarnos que tenemos instalados los siguientes paquetes:
Ahora descargamos el repositorio completo:
$ svn co svn://svn.ps2dev.org/psp/trunk
Para ejecutar el script tendremos que establecer algunas variables en el sistema:
$ export PSPDEV=/usr/local/pspdev
$ export PATH=$PATH:$PSPDEV/bin
Es recomendable dejar fijos estos cambios, para ello (y si no queremos interferir en el resto de usuarios) modificaremos el archivo ~/.bashrc y añadiremos las siguientes líneas:
export PSPDEV="/usr/local/pspdev" export PATH="$PATH:$PSPDEV/bin"
Ya sólo nos queda ejecutar el script del toolchain:
$ cd trunk/psptoolchain
$ ./toolchain.sh
Bien, esto se descargará todas las herramientas de GNU necesarias, los últimos parches disponibles para ellas, los aplicará, compilará las herramientas y finalmente, las instalará. No hace falta ser root (no debemos serlo) ya que instala todo eso en /usr/local/pspdev y ahí podremos escribir si pertenecemos al grupo staff.
Tenemos la gran mayoría del homebrew recopilado en el repositorio subversion que descargamos anteriormente, además de unas cuantas librerías y utilidades bastante "entretenidas" (por ejemplo: SDL, prx-tools, etc.).. , sólo debemos compilarlo e instalarlo. No es difícil, es más bien repetitivo.
Ya que tenemos el compilador para psp listo, lo siguiente es compilar el pspsdk, que son las bibliotecas de acceso a los recursos de la psp:
$ cd trunk/pspsdk
$ ./bootstrap
$ ./configure
$ make
$ make doxygen-doc (opcional)
$ make install
Al igual que antes, no es necesario ser root en ninguno de los pasos, todo se instalará en los directorios de /usr/local/pspdev.
Gracias a uno de los sceners que más han contribuído al pspsdk, un tal oopo, tenemos un script que nos descargan y compilan el resto de librerías extra como son zlib, SDL, etc. Para usar este script es necesario tener instalado libtool:
$ cd trunk/psplibraries
$ ./libraries.sh
Esto nos instalará (en este orden): zlib, bzip2, freetype, jpeg, libbulletml, libmad, libmikmod, libogg, libpng, libpspvram, libTremor, libvorbis, lua, pspgl, pspirkeyb, sqlite, SDL, SDL-gfx, SDL-image, SDL-mixer, SDL-ttf, smpeg-psp y zziplib. ¿Suficiente? ;-)
Si no queremos instalar todo eso, podemos instalar las que deseemos una a una, a modo de ejemplo vamos a instalar una libreria, aunque el sdk incluye muchas, todas se suelen hacer de igual o similar forma. En cualquier caso, en cada directorio tenéis un fichero README.PSP que os lo explica, así como si la librería tiene dependencias (en cuyo caso hay que compilar e instalar sus dependencias antes). Vamos a instalar SDL, por ejemplo: leemos su archivo README.PSP y encontramos las instrucciones para hacerlo:
$ cd trunk/SDL
$ ./autogen.sh
$ LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" ./configure --host psp --prefix=$(psp-config --psp-prefix)
$ make
$ make install
Repito que en ningún paso es necesario ser root. Esto instalará las librerías para psp y sus cabeceras. En el README.PSP explican cómo escribir aplicaciones para psp que usen estas librerías, incluyendo las opciones del compilador.
El orden de instalación de las utilidades y las librerías que YO he seguido es el siguiente:
Con esto tendréis toda la versatilidad de SDL al alcance de vuestra psp ;-) (así como otro montón de librerías interesantes).
Nota: libmikmod compila y se instala sin problemas, sin embargo, no se puede usar de forma "automática" en tus compilaciones porque no se ha incluído el programa libmikmod-config. Yo he creado el mio propio que debéis copiar en /usr/local/pspdev/psp/bin (bueno... depende de donde estéis instalando todo, en realidad sería en $(psp-config -p)/bin). Una vez compilado e instalado libmikmod copiáis este archivo y seguís la instalación de las librerías de forma normal.
#! /bin/sh prefix=`psp-config -P` exec_prefix=${prefix} exec_prefix_set=no usage="Usage: libmikmod-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] \ [--libs] [--cflags] [--ldadd]" if test $# -eq 0 ; then echo "${usage}" 1>&2 exit 1 fi while test $# -gt 0 ; do case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case $1 in --prefix=*) prefix=$optarg if test $exec_prefix_set = no ; then exec_prefix=$optarg fi ;; --prefix) echo $prefix ;; --exec-prefix=*) exec_prefix=$optarg exec_prefix_set=yes ;; --exec-prefix) echo $exec_prefix ;; --version) echo 3.1.11 ;; --cflags) includedir=${prefix}/include if test $includedir != /usr/include ; then includes=-I$includedir fi echo $includes ;; --ldadd) ;; --libs) libdir=-L${exec_prefix}/lib echo $libdir -lmikmod -L`psp-config -P`/lib -L`psp-config \ -p`/lib -lm -lpspvfpu -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay \ -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel ;; *) echo "${usage}" 1>&2 exit 1 ;; esac shift done
Gracias a la inestimable ayuda de Paco, disponemos de un paquete debian con la toolchain y el pspsdk completo, como podéis ver en este aviso. Funciona perfectamente, pero no se puede compilar e instalar directamente el resto de librerías puesto que los scripts del homebrew son un poco cutres y hay que maquillarlos un poquito... cuando tenga tiempo intentaré buscar alguna solución...
Bueno... con esto tendréis un completo entorno de desarrollo para psp. Era el objetivo de la receta. De todas formas falta aún una cosa: crear un archivo EBOOT.PBP listo para su ejecución en la consola. El problema se reduce a tener el Makefile apropiado. Os sugiero que os descarguéis el código fuente del port del maravilloso ScummVM, tiene el mejor Makefile sobre el tema que he visto. De todas formas, si no dáis con ello, se hace una receta y en paz, ok?
Disfruten! :-)
Comments
Problemilla
Hola.
En su dia seguí éste tutorial y me funcionó al 100%, pero ahora tengo un portatil nuevo y le quería instalar el sdk. El caso es que, como no está el tool chain que se indica, lo he tenido que probar con otros (20070830, 20070626 y 20080610). El caso es que con los tres me da el mismo error:
y se para. Antes de ésto no da ningun error, aunque por si acaso pongo algunas salidas:
Llevo dos dias con esto, googleando, pero a todo el mundo le pasa usando el Cygwin, y resultan ser fallos del tipo de que el nombre de usuario o la carpeta tienen espacios, que no es mi caso. ¿Teneis alguna idea de por que puede ser? Tengo un Core2Duo y un Ubuntu 8.04 de 64bits, ¿eso influye? ¿Alguien tiene el 20060120, por si este si me funciona?
Muchas gracias de antemano por la ayuda, y gracias tardías por el tutorial. Me fue realmente util.
Lo siento...
...pero me he bajado el último toolchain script que he encontrado, lo he descomprimido y lo he ejecutado... y funciona sin problemas, no me da el error que comentas, así que al no ser reproducible... no sé cómo podría ayudarte...
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
Fallo segmentación de gcc?
Tienes razón, con el error ese poco se puede hacer. He seguido investigando y creo que he llegado al error por el que falla el script 001-binutils. Al compilar el libiberty en la carpeta binutils da un fallo de segmentación el gcc (que por cierto no se si es normal, pero a mí no me había pasado hasta ahora):
joserc87@portatile:~/Programas/psptoolchain/scripts/binutils-2.16.1/libiberty$ make if [ x"" != x ] && [ ! -d pic ]; then \ mkdir pic; \ else true; fi touch stamp-picdir if [ x"" != x ]; then \ gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include -W -Wall -Wtraditional -pedantic ./regex.c -o pic/regex.o; \ else true; fi gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include -W -Wall -Wtraditional -pedantic ./regex.c -o regex.o In file included from ./../include/xregex.h:26, from ./regex.c:199: Fallo de segmentación Por favor envíe un reporte completo de bichos, con el código preprocesado si es apropiado. Vea <URL:http://gcc.gnu.org/bugs.html> para más instrucciones. For Debian GNU/Linux specific bug reporting instructions, see <URL:file:///usr/share/doc/gcc-4.2/README.Bugs>. make: *** [regex.o] Error 1De "pequeño" siempre te enseñan que nunca es fallo del compilador, sino tuyo, pero ya no se que pensar. Estoy acostrumbrado a que el compilador me de errores de compilacion, pero de ejecucion...
Alguien sabe si el error tiene alguna explicación, o es solo por que soy negro?
Muchas gracias por aguantarme y perdón por tardar tanto en contestar.
Solución
Me contesto a mi mismo dando(me) la solución. Más que nada por si alguien llega aqui con el mismo problema. En google apenas hay información sobre este error, y ya que lo conseguí solucionar cerca de un mes más tarde, no quiero que nadie pase por esto innecesariamente. Esto error me ocurrió en Ubuntu7.10, Ubuntu8.04 y Ubuntu8.10. Ahora he actualizado a la 9.10 y he conseguido instalar por primera vez del tirón sin un solo error, incluso con el script que instala todas las librerías de golpe!
.
Bueno, no se donde radica exactamente el fallo (al principio creí que era por la arquitectura de 64bits, pero probé en un celeron de 32 y me dió el mismo error). El caso es que la solución que encontré fue cambiar el compilador (yo cambie tanto gcc como g++ por si acaso) a una versión más baja a la hora de instalar la toolchain. Simplemente hay que instalar una versión más antigua, borrar el link /usr/bin/gcc y crearlo de nuevo linkando a la versión gcc antigua que está en el mismo directorio (idem para g++). Una vez que se ha instalado todo, se puede restaurar sin problema la versión nueva.
Otra opción es subir la versión, ya que como digo en la versión 9.10 de ubuntu (que usa gcc-4.4) si me funciona.
Supongo que nunca sabré el porqué del error, pero siempre recordaré con cariño el día que gcc me soltó un fallo de segmentación...xD. Espero que nadie necesite leer esto.
Saludos.
El enlace para la descarga de la toolchain
me temo que no funciona. Yo la he descargado mediante subversion:
javieralso@avalon:~$ svn co svn://svn.pspdev.org/psp/trunk/psptoolchain
The cause of the problem is:
The vendor put the bug there.
-- Meta amigo informático --
int-0...
.. seguro que lo cambia
A mi me ha pasado lo mismo y he usado esa dirección sin problemas
--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra
brue
problema con cpplibs
Hola tengo un problema al compilar cpplibs(el último extra que me falta) haber si alguien me puede ayudar pongo el error:
cd libpsp2d && make
make1: se ingresa al directorio `/home/fastangel/configuracion/programas/psptoolchain/trunk/cpplibs/libpsp2d’
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -I.. -c -o framebuffer.o framebuffer.cpp
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -I.. -c -o Exception.o Exception.cpp
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -I.. -c -o Drawable.o Drawable.cpp
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -I.. -c -o Screen.o Screen.cpp
Screen.cpp:41:17: error: png.h: No existe el fichero o el directorio
Screen.cpp: In static member function ‘static u32* PSP2D::Screen::getList()’:
Screen.cpp:229: error: conversión inválida de ‘unsigned int*’ a ‘u32*’
Screen.cpp: In member function ‘void PSP2D::Screen::_saveToPNG(const std::string&)’:
Screen.cpp:266: error: ‘png_structp’ no se declaró en este ámbito
Screen.cpp:266: error: expected `;’ before ‘png_ptr’
Screen.cpp:267: error: ‘png_infop’ no se declaró en este ámbito
Screen.cpp:267: error: expected `;’ before ‘info_ptr’
Screen.cpp:277: error: ‘png_ptr’ no se declaró en este ámbito
Screen.cpp:277: error: ‘PNG_LIBPNG_VER_STRING’ no se declaró en este ámbito
Screen.cpp:277: error: ‘png_create_write_struct’ no se declaró en este ámbito
Screen.cpp:284: error: ‘info_ptr’ no se declaró en este ámbito
Screen.cpp:284: error: ‘png_create_info_struct’ no se declaró en este ámbito
Screen.cpp:286: error: ‘png_infopp’ no se declaró en este ámbito
Screen.cpp:286: error: ‘png_destroy_write_struct’ no se declaró en este ámbito
Screen.cpp:291: error: ‘png_init_io’ no se declaró en este ámbito
Screen.cpp:293: error: ‘PNG_COLOR_TYPE_RGB’ no se declaró en este ámbito
Screen.cpp:293: error: ‘PNG_INTERLACE_NONE’ no se declaró en este ámbito
Screen.cpp:294: error: ‘PNG_COMPRESSION_TYPE_DEFAULT’ no se declaró en este ámbito
Screen.cpp:294: error: ‘PNG_FILTER_TYPE_DEFAULT’ no se declaró en este ámbito
Screen.cpp:294: error: ‘png_set_IHDR’ no se declaró en este ámbito
Screen.cpp:295: error: ‘png_write_info’ no se declaró en este ámbito
Screen.cpp:298: aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto
Screen.cpp:298: error: conversión inválida de ‘int*’ a ‘int’
Screen.cpp:298: error: argumento de inicialización 4 de ‘int sceDisplayGetFrameBuf(void**, int*, int*, int)’
Screen.cpp:334: error: ‘png_write_row’ no se declaró en este ámbito
Screen.cpp:337: error: ‘png_write_end’ no se declaró en este ámbito
Screen.cpp:338: error: ‘png_infopp’ no se declaró en este ámbito
Screen.cpp:338: error: ‘png_destroy_write_struct’ no se declaró en este ámbito
make1: *** [Screen.o] Error 1
make1: se sale del directorio `/home/fastangel/configuracion/programas/psptoolchain/trunk/cpplibs/libpsp2d’
make: *** [libs] Error 2
edita..
el archivo png.h y en la linea 229 modifica, añadiendo (u32 *) del modo:
return (u32*) loquesiga
y recompila.
—
PPC: int main(){long foo=1649571173;puts(&foo);}
x86: int main(){long foo=1702187618;puts(&foo);}
brue
Me la juego...
…has instalado libpng en el pspdev? comprueba que está correctamente instalado porque no se de qué me suena que había que hacer alguna correción por ahí (con libpng o con cpplibs), pero no estoy seguro…
—————————————————————
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
—————————————————————
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
Y también hay que instalar ...
… libusb-dev
Por eso no me compilaba a mi la toolchain
The cause of the problem is:
The vendor put the bug there.
-- Meta amigo informático --
Problema al instalar toolchain
Felicidades por el tuto. No podria ser más claro. Sobre todo me gusta especialmente por que trata como instalar el toolchain en linux y las librerías SDL.
. Lo he probado 2 veces ya, y despues de 1 hora y media bajando y compilando cosas, me dan una serie de errores de compilación.
El problema que tengo es que no puedo instalar el toolchain
Por los errores que obtengo, lo que me he dado cuenta es que dice que me falta el usb.h. Eso que significa? Tengo todos los paquetes necesarios, al menos los que se dicen arriba. Cual puede ser el problema? Pueden ser las cabeceras de linux-headers?
Agradecería muy-muy-mucho al que me pueda ayudar.
pongo la parte de los errores (si creeis que es demasiado texto como para ponerlo aki, decidlo y lo quito):
A psplinkusb/Makefile.clients
A psplinkusb/Makefile
A psplinkusb/Makefile.psp
A psplinkusb/psplink_user
A psplinkusb/psplink_user/exports.exp
A psplinkusb/psplink_user/kmode.S
A psplinkusb/psplink_user/psplink_user.h
A psplinkusb/psplink_user/main.c
A psplinkusb/psplink_user/Makefile
U psplinkusb
Revisión obtenida: 2336
make -C pspsh clean
make[1]: se ingresa al directorio `/home/hack87/psp_programing/install/psptoolch ain/build/psplinkusb/pspsh'
rm -f pspsh *.o
make[1]: se sale del directorio `/home/hack87/psp_programing/install/psptoolchai n/build/psplinkusb/pspsh'
make -C usbhostfs_pc clean
make[1]: se ingresa al directorio `/home/hack87/psp_programing/install/psptoolch ain/build/psplinkusb/usbhostfs_pc'
rm -f usbhostfs_pc *.o
make[1]: se sale del directorio `/home/hack87/psp_programing/install/psptoolchai n/build/psplinkusb/usbhostfs_pc'
if ( test -f /usr/include/SDL/SDL.h ); then { make -C tools/remotejoy/pcsdl clea n; } else { make -C tools/remotejoy/pc clean; } fi
make[1]: se ingresa al directorio `/home/hack87/psp_programing/install/psptoolch ain/build/psplinkusb/tools/remotejoy/pcsdl'
rm -f remotejoy *.o
make[1]: se sale del directorio `/home/hack87/psp_programing/install/psptoolchai n/build/psplinkusb/tools/remotejoy/pcsdl'
make -C pspsh all
make[1]: se ingresa al directorio `/home/hack87/psp_programing/install/psptoolch ain/build/psplinkusb/pspsh'
g++ -Wall -g -D_PCTERM -I../psplink -c -o pspsh.o pspsh.C
g++ -Wall -g -D_PCTERM -I../psplink -c -o parse_args.o parse_args.C
g++ -Wall -g -D_PCTERM -I../psplink -c -o pspkerror.o pspkerror.C
g++ -Wall -g -D_PCTERM -I../psplink -c -o asm.o asm.C
g++ -Wall -g -D_PCTERM -I../psplink -c -o disasm.o disasm.C
g++ -o pspsh pspsh.o parse_args.o pspkerror.o asm.o disasm.o -lreadline -lcurses
make[1]: se sale del directorio `/home/hack87/psp_programing/install/psptoolchai n/build/psplinkusb/pspsh'
make -C usbhostfs_pc all
make[1]: se ingresa al directorio `/home/hack87/psp_programing/install/psptoolch ain/build/psplinkusb/usbhostfs_pc'
cc -Wall -ggdb -I../usbhostfs -DPC_SIDE -D_FILE_OFFSET_BITS=64 -I. -O2 -c -o m ain.o main.c
main.c:19:17: error: usb.h: No such file or directory
main.c:98: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ to ken
main.c:207: error: expected ‘)’ before ‘*’ token
main.c:226: error: expected ‘)’ before ‘*’ token
main.c:244: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ t oken
main.c:311: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:311: warning: its scope is only this definition or declaration, which is probably not what you want
main.c: In function ‘close_device’:
main.c:317: warning: implicit declaration of function ‘usb_release_interface’
main.c:318: warning: implicit declaration of function ‘usb_reset’
main.c:319: warning: implicit declaration of function ‘usb_close’
main.c: At top level:
main.c:853: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c: In function ‘handle_hello’:
main.c:861: warning: implicit declaration of function ‘usb_bulk_write’
main.c: At top level:
main.c:864: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c: In function ‘handle_open’:
main.c:891: warning: implicit declaration of function ‘euid_usb_bulk_read’
main.c:901: warning: implicit declaration of function ‘euid_usb_bulk_write’
main.c: At top level:
main.c:908: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:982: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1076: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1143: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1194: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1225: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1290: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1337: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1392: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1447: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1502: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1654: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1702: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1785: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1836: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:1948: warning: ‘struct usb_dev_handle’ declared inside parameter list
main.c:2014: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
main.c: In function ‘do_hostfs’:
main.c:2086: error: ‘g_hDev’ undeclared (first use in this function)
main.c:2086: error: (Each undeclared identifier is reported only once
main.c:2086: error: for each function it appears in.)
main.c: In function ‘do_bulk’:
main.c:2223: error: ‘g_hDev’ undeclared (first use in this function)
main.c: In function ‘start_hostfs’:
main.c:2250: error: ‘g_hDev’ undeclared (first use in this function)
main.c:2250: warning: implicit declaration of function ‘wait_for_device’
main.c:2291: warning: dereferencing type-punned pointer will break strict-aliasi ng rules
main.c:2301: warning: dereferencing type-punned pointer will break strict-aliasi ng rules
main.c:2311: warning: dereferencing type-punned pointer will break strict-aliasi ng rules
main.c: In function ‘exit_app’:
main.c:2460: error: ‘g_hDev’ undeclared (first use in this function)
main.c: In function ‘async_thread’:
main.c:3083: error: ‘g_hDev’ undeclared (first use in this function)
main.c: In function ‘main’:
main.c:3119: warning: implicit declaration of function ‘usb_init’
make[1]: *** [main.o] Error 1
make[1]: se sale del directorio `/home/hack87/psp_programing/install/psptoolchai n/build/psplinkusb/usbhostfs_pc'
make: *** [all] Error 2
../scripts/009-psplinkusb.sh: Failed.
Gracias de antemano.
Problema con usb.h
Si te fijas en los scripts que compilan la toolchain, resulta que intenta instalar y compilar psplinkusb, para compilar la parte del PC de estas utilidades/librerías es necesario el paquete libusb-dev en el sistema, en Debian/Ubuntu:
)
# apt-get install libusb-dev
(también se puede usar aptitude
Con eso instalado te debería compilar sin problemas esta parte y todo el proceso continuará normalmente. Suerte.
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
Me funciona!
Ya me funciona:)
:)! muchisimas gracias por la rapidez en contestar 
Pues ahora...
...a ver si haces un programa chulo y lo subes que aprendamos
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
Gracias
Me estaba dando problemas la cuestión de los permisos en Ubuntu, resulta que para ejecutar el toolchain usé sudo (puesto que /usr/local le pertenece a root en esta distribución), pensé que no habría problemas puesto que tras la instalación podía ejecutar todas las herramientas psp-xxx, sin embargo al compilar no encontraba psp-ranlib. El problema eran los permisos (no entiendo bien la razón, como dije, desde mi usuario ejecuto sin problemas psp-ranlib y las demás desde la terminal), en fin, ya logré que funcionara, muchas gracias
.
instalación del toolchain
Hola, antes que nada agrader esta receta porque es la única sobre linux que he encontrado.
Yo soy nuevo en ésto de linux, hace apenas un mes que instalé Ubuntu porque me dijo un amigo que estaba muy bien. Cuál fue mi sorpresa cuando me pongo con ello, me bajo la imagen correspondiente a 6.10 amd64 y me aparece un mensaje de "signal out of range". En fin esto era solo para poneros en situación de mi nivel de inmadurez en lo que se refiere a linux: la shell, comandos, makefiles, librerías, repositorios, el famoso aptitude y toda esa maraña de cosas, que flotan en mi cabeza.
Una vez que con la beta del Feisty Fawn 7.04 de Ubuntu he conseguido instalarlo pues me había animado a instalar el toolchain en ubuntu al igual que lo tengo en el cywin sobre wXP. Se que ser root es como decir el administrador del equipo pero no entiendo bien como hay que realizar estos pasos sin ser root cuando al meterme en el sistema operativo ya me pide login y contraseña y me meto...como root (supongo yo vamos). En fin la cosa es que guiándome de mi mala intuición cuando en el paso de ejecutar ./toolchain.sh (los previos, es decir, instalación de las librerías necesarias, y descarga del archivo yo creo que los hice bien) llegó un punto de la instalación que ponía que no podía crear la carpeta .../pspdev y yo siguiendo mi pésima intuición pensé que eso era porque no era root y volví a ejecutarlo añaciendo sudo a la instrucción. Esto lo seguí aplicando a la hora de instalar el pspsdk (también tengo una duda con esto, ¿no es el pspsdk precisamente lo que instala el toolchain? de hecho siguiendo otras guias de instalación del entorno en windows sobre cygwin no hablan de instalar tras el toolchain el pspsdk ) pero llegó un punto en el que me dió un error aunque pusiera sudo delante os pongo esta parte:
Estoy completamente seguro de que nunca debí ejecutar las instrucciones con "sudo" delante pero ahora ya no sé como echar marcha atrás no sé como volver sobre mis pasos ni sé como hacerlo bien. Básicamente estoy perdido. Siento haberme alargado tanto. Gracias.
Corregir los 'sudo'...
La gente que empieza en esto del GNU/Linux suele usar como usuario para todo root. Esto es un grave error, deberías crearte un usuario y hacer siempre el login con ese usuario. Como ya tienes la toolchain instalada para el root lo que puedes hacer es cambiar el propietario de la toolchain y poner al nuevo usuario como propietario:
$ cd /usr/local
$ chown usuario:staff -R pspdev/*
$ chown usuario:staff pspdev
De todas formas, independiente a todo esto, he observado un error en la salida que has pegado:
/bin/bash: line 4: psp-ranlib: orden no encontrada
Esta utilidad se tiene que crear al instalar el toolchain, si no se ejecuta puede ser por dos motivos: algún error en la compilación o no se encuentra el ejecutable, en mi caso está en /usr/local/pspdev/bin/psp-ranlib. Si tienes ahí el ejecutable y no se encuentra es porque no has añadido ese directorio al path de tu sistema, añade esto en el .bash_profile que encontraras en tu home:
# set PATH so it includes user's private bin if it exists if [ -d /usr/local/pspdev/bin ] ; then export PSPDEV="/usr/local/pspdev" export PATH="$PATH:$PSPDEV/bin" fiSi el ejecutable no existe entonces no se te está compilando bien el toolchain, revisa los pasos de la generación. Puede ser incluso por algún bug en los parches de la gnu toolchain (poco probable).
Por último sólo decirte que el toolchain es el conjunto de herramientas necesarias para compilar y manejar aplicaciones para una arquitectura determinada (la PSP en este caso). El pspsdk es un conjunto de bibliotecas que facilitan el acceso al hardware de la PSP. He visto en scripts de instalación del pspsdk que automáticamente instalan el toolchain, pero lo mismo da que lo instales tú y luego instales el sdk.
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
Solucionado
Hola, siento haber tardado en contestar pero en fin uno se ve necesitado de tiempo. He seguido todos los pasos que me has dicho y perfecto; la pena es que uno siempre termina viendo ésto como que funciona por arte de magia. Por cierto una última duda tonta, el ¿root existe como tal?. Me intento explicar: al ir a crear una cuenta para un nuevo usuario vi que había dos líneas una con el root y otra con digamos el nombre que di yo al instalar ubuntu (en mi caso wilcome como se puede apreciar en el código que puse inicialmente) He intentado meterme utilizando como login root y la misma contraseña que siempre (porque no me sé otra) y, lógicamente, no me deja porque esto debe ser una tontería. Es ¿entonces wilcome el root?; a pesar de tener esta duda seguí tus pasos creando otro usuario más y aunque ejecuté las órdenes de cambiar el propietario de pspdev luego bajé de nuevo el toolchain y repetí los pasos de instalación de tu guía (por si acaso) esta vez con total éxito (¡¡ya se ha creado mi primer EBOOT.PBP en linux!!). ¡muchas gracias por tu ayuda!
usuario root
El usuario root existe realmente. En ubuntu, si quieres activarlo para poder usarlo, has de ponerle una contraseña. Desde tu usuario haces:
$ sudo su
y metes el password de tu usuario. Después cambias el password de root con (nótese que ahora sale # que denota superusuario -root- ):
# passwd
Ahora ya tienes activado tu usuario de root. Y podrás acceder a él con:
$ su root
e introduces el password de root que pusiste antes.
Como dice int-0, no uses root si no sabes lo que estás haciendo, con tu usuario te debería bastar.
--
·brue
brue
hey int-0...
tú tienes 1.5 o 3.xx DA ???
--
·brue
brue
Pues ahora mismo
Tengo 1.50 porque el SDK de la 3.xx necesita de unos parches (tengo entendido) pero creo que el cambio a 3.XX DA va a ser inminente...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
macho...
el toolchain no rula en ppc ... cago en tó. A ver si lo puedo arreglar para el mac.
--
·brue
brue
Podrias explicarnos como
Podrias explicarnos como instalaste esas librerias ( SDL, pspgl, orbis ... ) GRACIAS !
Pues depende...
...como dije en la receta (creo) las instrucciones de cada librería vienen en un archivo README.PSP o símplemente README (para los exclusivos a la PSP). Generalmente ejecutando "make install" se instala en tu SDK. En la PSP no hace falta instalar nada puesto que la compilación de los EBOOT.PBP se realiza de forma estática (vamos que lo mete todo ahí a cholón)...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
Tutorial inmejorable...
hey, enhorawena por el pedazo de tutorial.. te importaría que lo publicase en un par de webs de la scene?, esq es el mejor tutorial que he visto, y debería conocerlo mas gente.. te aseguro q te pongo como autor total.. y hago referencia a esta web..
sin problemas.. jeje
Salu2
PD: las webs son http://lan.st y http://elotrolado.net
Por supuesto
Es de agradecer que pidas permiso, pero debes saber que todo el contenido de esta web está bajo una licencia Creative Commons. Lo único que tienes que hacer es cumplir esa licencia.
Desde luego que no hay problema!
...y si mantienes mi autoría te invito a unas cañas y todo!
P.D. Perdona por tardar tanto en responder... no me di cuenta!
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------
La Scene..
Esta gente apoya mucho a Dark Alex, y algunos de la web de eol curran mucho, hay tutos y mucha gente desinteresada. Además creo que ellos tienen una política de licencia parecida.
Creo que la receta de int-0 merece que rule por la web
--
·brue
·vigilando
brue
Gracias
En nombre de todos, gracias...
Debería estar como receta para que la gente lo tenga como referencia.
--
·brue
·dj brue
brue