Помощь по портированию библиотеки SIP на PSP
-
01-07-2019 - |
Вопрос
В настоящее время я пытаюсь портировать библиотеку стека 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] при изучении уже портированных библиотек.
Спасибо за ваши ответы.