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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top