【发布时间】:2010-09-10 12:37:00
【问题描述】:
我目前正在尝试将 SIP 堆栈库 (pjSIP) 移植到 PSP 控制台(使用 PSPSDK 工具链),但我在使用 makefile 时遇到了太多麻烦(进行适当的更改并解决链接问题)。
有没有人知道什么好书、书或其他东西可以对移植库有所了解?
这个项目提供的关于移植的唯一文档似乎过于专注于主要操作系统。
【问题讨论】:
标签: c++ porting sip playstation-portable pspsdk
我目前正在尝试将 SIP 堆栈库 (pjSIP) 移植到 PSP 控制台(使用 PSPSDK 工具链),但我在使用 makefile 时遇到了太多麻烦(进行适当的更改并解决链接问题)。
有没有人知道什么好书、书或其他东西可以对移植库有所了解?
这个项目提供的关于移植的唯一文档似乎过于专注于主要操作系统。
【问题讨论】:
标签: c++ porting sip playstation-portable pspsdk
移植是非常特定于平台的,所以我认为您不会找到很多关于该主题的一般文献。
在我的脑海中,你可能会遇到一些事情:
【讨论】:
查看移植到 PSP 的其他库。在库的 linux 版本和 PSP 版本之间进行差异应该会告诉你。
另外,尝试了解 PSP 的 POSIX 兼容性如何,这将告诉您移植库的工作量有多大。
【讨论】:
我做了一些研究,在 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] 的观点,即查看已移植的库。
感谢您的回复。
【讨论】:
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 有你需要的一切,如果没有,那么你只需要创建你缺少的功能的替代品。
【讨论】: