Вопрос

В настоящее время я пытаюсь портировать библиотеку стека SIP (pjSIP) на консоль PSP (используя набор инструментов PSPSDK), но у меня слишком много проблем с make-файлами (внесение правильных изменений и решение проблем с связыванием).

Кто-нибудь знает хороший текст, книгу или что-то еще, чтобы получить представление о портировании библиотек?

Единственная документация по портированию, которую предлагает этот проект, кажется слишком посвященной основным ОС.

Это было полезно?

Решение

Посмотрите на другие библиотеки, перенесенные на PSP.Выполнение различий между версией библиотеки для Linux и версией для PSP должно показать вам.

Кроме того, попытайтесь узнать, насколько PSP совместим с POSIX, это покажет вам, насколько велика работа по переносу библиотеки.

Другие советы

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 (процессор PSP). Для этого вам нужно выполнить поиск mips*--) и клонируйте ее в аллегрекс, например:

mips*-*-*)
    noconfigdirs="$noconfigdirs target-libgloss"
    ;;
mipsallegrex*-*-*)
    noconfigdirs="$noconfigdirs target-libgloss"
    ;;

Затем вы запускаете команду make и надеетесь, что в newlib есть все, что вам нужно. Если это не так, вам просто нужно создать альтернативы отсутствующим функциям.

Портирование очень зависит от платформы, поэтому я не думаю, что вы найдете много общей литературы по этому вопросу.

На мой взгляд, некоторые вещи, с которыми вы можете столкнуться:

  • порядок байтов
  • размер слова
  • доступные библиотеки
  • различия в компиляторах
  • различия компоновщика (вы это уже видели)
  • различия в периферийном оборудовании
  • ...

Я провел еще несколько исследований и нашел этот пост на форуме 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] при изучении уже портированных библиотек.

Спасибо за ваши ответы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top