Pregunta

Actualmente estoy intentando portar una biblioteca de pila SIP (pjSIP) a la consola PSP (usando la cadena de herramientas PSPSDK), pero tengo demasiados problemas con los archivos MAKE (realizando los cambios adecuados y resolviendo problemas de vinculación).

¿Alguien conoce un buen texto, libro o algo para obtener información sobre la portabilidad de bibliotecas?

La única documentación que ofrece este proyecto sobre la portabilidad parece demasiado dedicada a los principales sistemas operativos.

¿Fue útil?

Solución

Mire otras bibliotecas que fueron trasladadas a PSP.Hacer diferencias entre una versión de Linux de una biblioteca y una versión de PSP debería mostrarte.

Además, intente conocer qué tan compatible con POSIX es la PSP, eso le indicará qué tan grande es el trabajo de portar la biblioteca.

Otros consejos

La PSP no es UNIX y no es compatible con POSIX; sin embargo, la cadena de herramientas de código abierto está compuesta por gcc 4.3, bintutils 1.16.1 y newlib 1.16.

La mayor parte de la biblioteca C ya está presente y puede compilar la mayor parte de su código.Se han portado muchas bibliotecas simplemente invocando el script de configuración con los siguientes argumentos:

LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" ./configure --host psp --prefix=$(pwd)/../target/psp

Sin embargo, es posible que necesites parchear tus scripts configure y configure.ac para conocer el host mips allegrex (la CPU de PSP), para ello busca un mips*--) línea y clonarlo al allegrex como:

mips*-*-*)
    noconfigdirs="$noconfigdirs target-libgloss"
    ;;
mipsallegrex*-*-*)
    noconfigdirs="$noconfigdirs target-libgloss"
    ;;

Luego ejecuta el comando make y espera que newlib tenga todo lo que necesita; si no es así, simplemente necesita crear alternativas a las funciones que le faltan.

La portabilidad es muy específica de la plataforma, por lo que no creo que encuentre mucha literatura general sobre el tema.

Lo que tengo en mente son algunas cosas que puedes encontrar:

  • endianidad
  • Tamaño de la palabra
  • bibliotecas disponibles
  • diferencias del compilador
  • diferencias del enlazador (ya lo has visto)
  • diferencias de hardware periférico
  • ...

Investigué un poco más y encontré esta publicación en el foro ps2dev:

La PSP no es un sistema Unix y el pspsdk no es compatible con POSIX.Está cerca en algunos lugares, pero no se puede esperar simplemente tomar cualquier código que se compile bien en un sistema POSIX y hacerlo funcionar.Por ejemplo:

  • pspsdk usa newlib, que carece de algunas de las características y encabezados de glibc.
  • libc no está vinculado de forma predeterminada, por lo que las pruebas típicas de autoconf no se podrán compilar
  • autoconf no sabe nada sobre la PSP
  • Es necesario definir PSP_MODULE_INFO y ejecutar psp-fixup-imports en el ejecutable; de ​​lo contrario, no se ejecutará.

Deberías mirar todas las otras bibliotecas y programas que han sido portados (en los repositorios de psp y pspware).Todas las bibliotecas SDL utilizan autoconf, por ejemplo.

Creo que esto ofrece más detalles sobre lo que estaba buscando y también muestra el punto de @[Jonathan Arkell] de buscar bibliotecas que ya han sido portadas.

Gracias por sus respuestas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top