【问题标题】:Help on Porting a SIP library to PSP将 SIP 库移植到 PSP 的帮助
【发布时间】:2010-09-10 12:37:00
【问题描述】:

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

有没有人知道什么好书、书或其他东西可以对移植库有所了解?

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

【问题讨论】:

    标签: c++ porting sip playstation-portable pspsdk


    【解决方案1】:

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

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

    • 字节序
    • 字长
    • 可用的库
    • 编译器差异
    • 链接器差异(您已经看到了)
    • 外围硬件差异
    • ...

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我做了一些研究,在 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] 的观点,即查看已移植的库。

        感谢您的回复。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-17
            • 2020-08-19
            • 2011-06-21
            • 1970-01-01
            相关资源
            最近更新 更多