もうhenkaku.xyz行ったらそれだけでぜーんぶ完了しちゃって一瞬にして終了しちゃうので、自分でビルドしてHello Worldしてみるか~というお話。
https://henkaku.xyz/developer/を参考に!
あんまり多くをインストールしてないArchLinuxで実験。
取り敢えず環境構築。
cmakeが必要らしいのでまずそれをインストールしてから。
[bash]
$ sudo pacman -S cmake
$ git clone https://github.com/vitadev/vdpm
$ cd vdpm
$ ./bootstrap-vitasdk.sh
[/bash]
パーミッション周りでめちゃエラー出てたっぽい。
bootstrap-vitasdk.shの中を見ると、/usr/local/vitasdkを$USER:$USERにchownするコマンドがあったぽいけど、$USERなグループってあったか?usersじゃない?
というわけで手作業で実行しリベンジ
[bash]
$ sudo chown tea:users /usr/local/vitasdk
$ ./bootstrap-vitasdk.sh
$ export VITASDK=/usr/local/vitasdk
$ export PATH=$VITASDK/bin:$PATH
$ ./install-all.sh
[/bash]
インストールできたっぽいのでサンプルソースをパクってきてビルドする
[bash]
$ cd ~
$ git clone https://github.com/vitasdk/samples
$ cd samples/hello_world/src
$ arm-vita-eabi-gcc -c -o main.obj main.c
$ arm-vita-eabi-gcc -Wl,-q -o homebrew.elf main.obj
$ vita-elf-create homebrew.elf homebrew.velf
$ vita-make-fself homebrew.velf eboot.bin
[/bash]
出力されたeboot.binをvpkに放り込めよって書いてあったけど、既存のvpkにアーカイブマネージャで突っ込むのじゃ流石にダメだったので、vita-pack-vpkを使う
こちらでバイナリが拾えそうだったので使わせていただく。libzip.so.4がないよと怒られたのでlibzipのインストールも。
[bash]
$ unzip vita-pack-vpk.zip
$ chmod +x ./vita-pack-vpk
$ ./vita-pack-vpk
./vita-pack-vpk: error while loading shared libraries: libzip.so.4: cannot open shared object file: No such file or directory
$ sudo pacman -S libzip
$ ./vita-pack-vpk
Usage:
/home/tea/vita-pack-vpk [OPTIONS] output.vpk
-s, –sfo=param.sfo sets the param.sfo file
-b, –eboot=eboot.bin sets the eboot.bin file
-a, –add src=dst adds the file src to the vpk as dst
-h, –help displays this help and exit
$ alias vita-pack-vpk=/home/tea/vita-pack-vpk
$ cd samples/hello_world
$ vita-pack-vpk -b ./src/eboot.bin out.vpk
.sfo file missing.
[/bash]
sfoファイルがないとダメらしい。それらしくつくってリベンジ。
[bash]
$ vita-mksfoex -s TITLE_ID=XXXX00001 "hello world" param.sfo
$ vita-pack-vpk -s ./param.sfo -b ./src/eboot.bin out.vpk
[/bash]
エラー出なかったのでこれをFTP経由でVitaに放り込んで、あとは通常のvpkと同じようにインストール。
[caption id=”attachment_271” align=”alignnone” width=”300”] バブルできた[/caption]
[caption id=”attachment_272” align=”alignnone” width=”300”] LiveAreaもできる[/caption]
ちなみに、今回使ったソースコードは、
[cpp]
#include <psp2/kernel/processmgr.h>
#include <stdio.h>
int main(int argc, char *argv[]){
printf("Hello World!\n");
sceKernelExitProcess(0);
return 0;
]
[/cpp]
みたいな感じ。(サンプルそのまんま)
標準出力にHello Worldしたそのすぐ後にはもう終わりそうな行があるし、次の行にはreturnなので、つまりPSVita側で実行したらおおよそ何も見えずに終了してしまうのであった。
forで10000回くらい回せば見れるでしょ~とか思ってやり直してみたんだけど、時間が長くなっただけで画面には何もうつらなかった。アプリケーション起動しても標準出力は見えないんかなぁ。
ちなみに、ばっちりMakefile用意して貰えてるので、vita-pack-vpkの導入さえ出来ていれば全自動でイケる。