我目前正在尝试将SIP堆栈库(pjSIP)移植到PSP控制台(使用PSPSDK工具链),但我在使用makefile时遇到了太多麻烦(进行适当的更改并解决链接问题)。
有没有人知道一个好的文本,书籍或其他什么来获得关于移植库的一些见解?
这个项目提供的关于移植的唯一文档似乎过于专注于主要操作系统。
答案 0 :(得分:2)
查看移植到PSP的其他库。在linux版本的库和PSP版本之间做差异应该会显示出来。
另外,尝试了解POSSP与POSP的兼容性,这将告诉您移植库的工作量有多大。
答案 1 :(得分:2)
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拥有你所需要的一切,如果没有,那么你只需要创建你缺少的函数的替代品。
答案 2 :(得分:1)
移植是非常特定于平台的,所以我认为你不会找到关于这个主题的一般文献。
在我的脑海里,你可能会遇到一些事情:
答案 3 :(得分: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]关于已经移植过的图书馆的观点。
感谢您的回复。