2

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

有没有人知道好的文本、书籍或其他东西可以对移植库有所了解?

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

4

4 回答 4

2

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

此外,尝试了解 PSP 与 POSIX 的兼容性如何,这将告诉您移植库的工作量有多大。

于 2008-09-18T04:44:51.800 回答
2

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

大多数 C 库已经存在并且可以编译您的大部分代码。仅通过使用以下参数调用配置脚本即可移植许多库:

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 有你需要的一切,如果没有,那么你只需要创建你缺少的函数的替代品。

于 2009-01-05T20:01:50.047 回答
1

移植是非常特定于平台的,所以我认为您不会找到很多关于该主题的一般文献。

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

  • 字节序
  • 字长
  • 可用的图书馆
  • 编译器差异
  • 链接器差异(您已经看过那个)
  • 外围硬件差异
  • ...
于 2008-09-18T03:51:48.357 回答
0

我做了一些更多的研究,并在 ps2dev 论坛上找到了这篇文章:

PSP 不是 Unix 系统,并且 pspsdk 不兼容 POSIX。它在某些地方很接近,但你不能指望只使用在 POSIX 系统上编译良好的任何代码并让它工作。例如:

  • pspsdk 使用newlib,它缺少一些glibc 的特性和头文件。
  • libc 默认没有链接,所以典型的 autoconf 测试将无法构建
  • autoconf 对 PSP 一无所知
  • 需要定义 PSP_MODULE_INFO 并在可执行文件上运行 psp-fixup-imports,否则它将无法运行

您应该查看所有其他已移植的库和程序(在 psp 和 pspware 存储库中)。例如,所有 SDL 库都使用 autoconf。

我认为这为我正在寻找的内容提供了更多细节,并且还展示了@[Jonathan Arkell] 的观点,即查看已经移植的库。

感谢您的回复。

于 2008-09-18T18:07:14.087 回答