Aiuto sul porting di una libreria SIP su PSP
-
01-07-2019 - |
Domanda
Attualmente sto cercando di trasferire una libreria stack SIP (pjSIP) sulla console PSP (utilizzando la toolchain PSPSDK), ma ho troppi problemi con i makefile (apportando le modifiche appropriate e risolvendo problemi di collegamento).
Qualcuno conosce un buon testo, un libro o qualcosa per avere qualche idea sul porting delle librerie?
L'unica documentazione offerta da questo progetto sul porting sembra troppo dedicata ai principali sistemi operativi.
Soluzione
Guarda le altre librerie che sono state trasferite sulla PSP.Fare differenze tra una versione Linux di una libreria e una versione PSP dovrebbe mostrartelo.
Inoltre, prova a sapere quanto è compatibile POSIX la PSP, questo ti dirà quanto è grande il lavoro di porting della libreria.
Altri suggerimenti
La PSP non è UNIX e non è compatibile con POSIX, tuttavia la toolchain open source è composta da gcc 4.3, bintutils 1.16.1 e newlib 1.16.
La maggior parte della libreria C è già presente e può compilare la maggior parte del codice.Molte librerie sono state portate semplicemente invocando lo script configure con i seguenti argomenti:
LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" ./configure --host psp --prefix=$(pwd)/../target/psp
Tuttavia potrebbe essere necessario applicare una patch agli script configure e configure.ac per conoscere l'host mips allegrex (la CPU PSP), per farlo cercare un mips*--) e clonarlo nell'allegrex come:
mips*-*-*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
mipsallegrex*-*-*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
Quindi esegui il comando make e speri che newlib abbia tutto ciò di cui hai bisogno, in caso contrario devi solo creare alternative alle funzioni che ti mancano.
Il porting è molto specifico per la piattaforma, quindi non penso che troverai molta letteratura generale sull'argomento.
Nella mia mente, alcune cose che potresti incontrare:
- endianità
- dimensione della parola
- librerie disponibili
- differenze del compilatore
- differenze nel linker (l'hai già visto)
- differenze hardware periferiche
- ...
Ho fatto qualche ulteriore ricerca e ho trovato questo post sul forum ps2dev:
La PSP non è un sistema Unix e pspsdk non è compatibile con POSIX.In alcuni punti è vicino, ma non puoi aspettarti di prendere semplicemente un codice che si compila bene su un sistema POSIX e farlo funzionare.Per esempio:
- pspsdk utilizza newlib, a cui mancano alcune funzionalità e intestazioni di glibc.
- libc non è collegato per impostazione predefinita, quindi i tipici test di autoconf non verranno creati
- autoconf non sa nulla della PSP
- sono necessari la definizione di PSP_MODULE_INFO e l'esecuzione di psp-fixup-imports sull'eseguibile, altrimenti non verrà eseguito
Dovresti dare un'occhiata a tutte le altre librerie e programmi che sono stati portati (nei repository psp e pspware).Tutte le librerie SDL utilizzano autoconf, ad esempio.
Penso che questo fornisca maggiori dettagli su ciò che stavo cercando e mostri anche il punto di @[Jonathan Arkell] nell'esaminare le librerie che sono già state trasferite.
Grazie per le tue risposte