Помощь по переносу библиотеки SIP на PSP
В настоящее время я пытаюсь портировать библиотеку стека SIP (pjSIP) на консоль PSP (используя набор инструментов PSPSDK), но у меня слишком много проблем с make-файлами (внесением надлежащих изменений и решением проблем компоновки).
Кто-нибудь знает хороший текст, книгу или что-нибудь, чтобы получить представление о переносе библиотек?
Единственная документация, которую этот проект предлагает по портированию, кажется, слишком посвящена основным ОС.
4 ответа
Посмотрите на другие библиотеки, которые были перенесены на PSP. Выполнение различий между версией библиотеки linux и версией PSP покажет вам.
Кроме того, попытайтесь узнать, насколько POSIX-совместим PSP, и вы узнаете, насколько велика работа по переносу библиотеки.
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), чтобы выполнить поиск строки mips * --) и клонировать ее в allegrex, например:
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-import для исполняемого файла, иначе он не запустится
Вы должны посмотреть на все другие библиотеки и программы, которые были портированы (в репозиториях psp и pspware). Например, все библиотеки SDL используют autoconf.
Я думаю, что это дает больше деталей в том, что я искал, а также показывает точку зрения @[Jonathan Arkell] на библиотеки, которые уже были перенесены.
Спасибо за ваши ответы.