現在、SIP スタック ライブラリ (pjSIP) を PSP コンソールに (PSPSDK ツールチェーンを使用して) 移植しようとしていますが、makefile で問題が発生しています (適切な変更を行い、リンクの問題を解決する必要があります)。
ライブラリの移植に関する洞察を得るための良いテキスト、本、または何かを知っている人はいますか?
このプロジェクトが移植に関して提供する唯一のドキュメントは、主要な OS に特化しすぎているようです。
現在、SIP スタック ライブラリ (pjSIP) を PSP コンソールに (PSPSDK ツールチェーンを使用して) 移植しようとしていますが、makefile で問題が発生しています (適切な変更を行い、リンクの問題を解決する必要があります)。
ライブラリの移植に関する洞察を得るための良いテキスト、本、または何かを知っている人はいますか?
このプロジェクトが移植に関して提供する唯一のドキュメントは、主要な OS に特化しすぎているようです。
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 に必要なものがすべて含まれていることを期待します。そうでない場合は、欠落している関数の代替を作成するだけです。
PSP に移植された他のライブラリを見てください。Linux バージョンのライブラリと PSP バージョンの間で差分を作成すると、表示されるはずです。
また、PSP の POSIX 互換性を知るようにしてください。これにより、ライブラリを移植する作業がどれほど大きいかがわかります。
移植は非常にプラットフォーム固有であるため、このテーマに関する一般的な文献はあまり見当たらないと思います。
私の頭から離れて、あなたが遭遇するかもしれないいくつかのこと:
さらに調査を行ったところ、ps2dev フォーラムで次の投稿を見つけました。
PSP は Unix システムではなく、pspsdk は POSIX に準拠していません。いくつかの場所では近いですが、POSIX システムで正常にコンパイルされて動作するコードをそのまま使用することは期待できません。例えば:
- pspsdk は、glibc の機能とヘッダーの一部が欠けている newlib を使用します。
- libc はデフォルトではリンクされていないため、通常の autoconf テストはビルドに失敗します
- autoconf は PSP について何も知らない
- PSP_MODULE_INFO を定義し、実行可能ファイルで psp-fixup-imports を実行する必要があります。そうしないと実行されません
(psp および pspware リポジトリにある) 移植された他のすべてのライブラリとプログラムを確認する必要があります。たとえば、すべての SDL ライブラリは autoconf を使用します。
これは私が探していたものの詳細を提供し、@[Jonathan Arkell] が既に移植されたライブラリを調べるポイントを示していると思います。
返信ありがとうございます。