参考网站 https://pspdev.github.io/
以WSL为例:假设已安装Ubuntu。
注意不要同时开虚拟机,否则插入读卡器或PSP时没有存储设备。
安装依赖:
sudo apt-get update
sudo apt-get install build-essential cmake pkgconf libreadline8 libusb-1.0-0 libgpgme11 libarchive-tools fakeroot
更改环境变量:
nano ~/.bashrc
增加以下行(切记要将原来PSPDEV的~展开为/home/zhaochen,以我自己环境的为例,否则会出现链接错误):
export PSPDEV="/home/zhaochen/pspdev"
export PATH="$PATH:$PSPDEV/bin"
关闭原终端并开启一个新终端窗口,检查环境变量是否设置正确:
psp-config --pspdev-path
返回:
/home/zhaochen/pspdev
测试编译器工作是否正常:
psp-gcc -v
返回:
Using built-in specs.
COLLECT_GCC=psp-gcc
COLLECT_LTO_WRAPPER=/home/zhaochen/pspdev/bin/../libexec/gcc/psp/14.1.0/lto-wrapper
Target: psp
Configured with: ../configure --quiet --prefix=/home/runner/work/pspdev/pspdev/pspdev --target=psp --with-sysroot=/home/runner/work/pspdev/pspdev/pspdev/psp --with-native-system-header-dir=/include --enable-languages=c,c++ --with-float=hard --with-newlib --disable-libssp --disable-multilib --enable-threads=posix --silent
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.1.0 (GCC)
写一个hello world程序:

新建文件夹/home/zhaochen/psp/hello_world/
main.c
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspdisplay.h>
// PSP_MODULE_INFO is required
PSP_MODULE_INFO("Hello World", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
int callback_thread(SceSize args, void *argp) {
int cbid =sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int setup_callbacks(void) {
int thid = sceKernelCreateThread("update_thread", callback_thread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
sceKernelStartThread(thid, 0, 0);
return thid;
}
int main(void) {
setup_callbacks();
pspDebugScreenInit();
while(1) {
pspDebugScreenSetXY(0,0);
pspDebugScreenPrintf("Hello World! on PSP\nby Zhao Chen @2024");
sceDisplayWaitVblankStart();
}
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(hello)
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} PRIVATE
pspdebug
pspdisplay
pspge
)
# Create an EBOOT.PBP file
create_pbp_file(
TARGET ${PROJECT_NAME}
ICON_PATH NULL
BACKGROUND_PATH NULL
PREVIEW_PATH NULL
TITLE ${PROJECT_NAME}
VERSION 01.00
)
构建命令:
mkdir build && cd build
psp-cmake ..
make
在存储卡的/PSP/GAME/ 下新建一个hello_world文件夹
拷贝EBOOT.PBP至其中即可。