Ajuda sobre Portando uma biblioteca SIP para PSP
-
01-07-2019 - |
Pergunta
Atualmente estou tentando porta uma biblioteca pilha SIP (pjSIP) para o console de PSP (usando o conjunto de ferramentas PSPSDK), mas eu estou tendo muita dificuldade com as makefiles (fazer as alterações apropriadas e resolver problemas de ligação).
Alguém sabe um bom texto, livro ou algo para obter algumas dicas sobre portar bibliotecas?
A única documentação Esta ofertas projeto sobre portabilidade parece muito dedicado ao grande sistema operacional da.
Solução
Olhe para outras bibliotecas que foram portados para o PSP. Fazendo diffs entre uma versão linux de uma biblioteca, e uma versão PSP deve mostrar-lhe.
Além disso, tente ficar a saber como POSIX compatível a PSP é, que lhe dirá o quão grande o trabalho de portar a biblioteca mais é.
Outras dicas
A PSP não é UNIX e não é compatível com POSIX, no entanto a fonte toolchain aberto é composta por gcc 4.3, bintutils 1.16.1 e newlib 1,16.
A maior parte da biblioteca C já está presente e pode compilar a maioria de seu código. Muitas bibliotecas foram portados apenas invocando o script configure com os seguintes argumentos:
LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" ./configure --host psp --prefix=$(pwd)/../target/psp
No entanto, você pode precisar de corrigir seus configure e configure.ac scripts para conhecer os MIPS acolhimento allegrex (a cpu PSP), para fazer isso você procurar um MIPS * - - ) da linha e clone -lo para o allegrex como:
mips*-*-*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
mipsallegrex*-*-*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
Depois de executar o comando make e esperança de que newlib tem tudo que você precisa, se isso não acontecer, então você só precisa criar alternativas para as funções que estão faltando.
Portando é muito plataforma específica, então eu não acho que você vai encontrar muita literatura geral sobre o assunto.
Em cima da minha mente, algumas coisas que você pode encontrar:
- endianness
- tamanho da palavra
- bibliotecas disponíveis
- diferenças do compilador
- diferenças vinculador (você já viu aquele)
- diferenças de hardware periférico
- ...
Eu fiz mais algumas pesquisas e encontrei este post no fórum ps2dev:
A PSP não é um sistema Unix, eo pspsdk não é compatível com POSIX. É perto em alguns lugares, mas você não pode esperar para apenas tomar qualquer código que compila bem em um sistema POSIX e tê-lo trabalhar. Por exemplo:
- usos pspsdk newlib, que carece de algumas das características e cabeçalhos da glibc.
- libc não é ligado por padrão, então os testes de autoconf típicos irá falhar para construir
- autoconf não sabe nada sobre o PSP
- definir PSP_MODULE_INFO e funcionando psp-correcção-importações sobre o executável são necessários, caso contrário ele não será executado
Você deve olhar para todas as outras bibliotecas e programas que foram portados (na PSP e repositórios pspware). Todas as libs SDL usar autoconf, por exemplo.
Eu acho que isso proporciona mais detalhes sobre o que eu estava procurando, e também mostrar o ponto de olhar para as bibliotecas que já foi portado @ [Jonathan Arkell].
Obrigado por suas respostas.