C++ 关于将SIP库移植到PSP的帮助

C++ 关于将SIP库移植到PSP的帮助,c++,porting,sip,playstation-portable,pspsdk,C++,Porting,Sip,Playstation Portable,Pspsdk,我目前正在尝试将SIP堆栈库(pjSIP)移植到PSP控制台(使用PSPSDK工具链),但我在makefile方面遇到了太多问题(进行适当的更改并解决链接问题) 是否有人知道一本好的文本、书籍或其他东西来获得一些关于移植库的见解 这个项目提供的关于移植的唯一文档似乎过于专注于主要的操作系统。移植是非常特定于平台的,因此我认为您不会找到关于这个主题的一般文献 在我脑海中,你可能会遇到一些事情: endianness 字号 可用图书馆 编译器差异 链接器差异(您已经看到了) 外围硬件差异 看看其

我目前正在尝试将SIP堆栈库(pjSIP)移植到PSP控制台(使用PSPSDK工具链),但我在makefile方面遇到了太多问题(进行适当的更改并解决链接问题)

是否有人知道一本好的文本、书籍或其他东西来获得一些关于移植库的见解


这个项目提供的关于移植的唯一文档似乎过于专注于主要的操作系统。

移植是非常特定于平台的,因此我认为您不会找到关于这个主题的一般文献

在我脑海中,你可能会遇到一些事情:

  • endianness
  • 字号
  • 可用图书馆
  • 编译器差异
  • 链接器差异(您已经看到了)
  • 外围硬件差异

看看其他移植到PSP的库。在linux版本的库和PSP版本之间进行差异应该会告诉您


另外,试着了解PSP与POSIX的兼容性,这将告诉你移植库的工作有多大。

我做了更多的研究,在ps2dev论坛上发现了这篇文章:

PSP不是Unix系统,pspsdk也不符合POSIX。它在某些地方非常接近,但您不能期望只使用任何在POSIX系统上编译良好的代码就可以工作。例如:

  • pspsdk使用newlib,它缺少glibc的一些特性和头文件
  • 默认情况下,libc没有链接,因此典型的autoconf测试将无法生成
  • autoconf对PSP一无所知
  • 需要定义PSP_模块_信息并在可执行文件上运行PSP fixup导入,否则无法运行
您应该查看所有其他已移植的库和程序(在psp和pspware存储库中)。例如,所有SDL库都使用autoconf

我认为这提供了我所寻找的更详细的信息,也表明了"乔纳森·阿克尔"研究已经移植的图书馆的意义


感谢您的回复。

PSP不是UNIX,也不兼容POSIX,但是开源工具链由gcc 4.3、bintutils 1.16.1和newlib 1.16组成

大多数C库已经存在,可以编译大部分代码。通过使用以下参数调用configure脚本,已经移植了许多库:

LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" ./configure --host psp --prefix=$(pwd)/../target/psp
但是,您可能需要修补configure和configure.ac脚本以了解主机mips allegrex(PSP cpu),为此,您需要搜索mips*--)行并将其克隆到allegrex,如:

mips*-*-*)
    noconfigdirs="$noconfigdirs target-libgloss"
    ;;
mipsallegrex*-*-*)
    noconfigdirs="$noconfigdirs target-libgloss"
    ;;
然后运行make命令并希望newlib拥有您所需要的一切,如果没有,那么您只需要创建您缺少的函数的替代项