第一步当然是先建立开发环境了,先到Google上搜索了一番,发现PSP的开发环境建立一般主要有两种:第一种是自己build PSP toolchain from scratch(前提是已有GNU的开发环境,比如Linux,Cygwin等);第二种是直接使用别人编译好的toolchain(比如devkitPro);凭着多年在Linux上开发经验本来想选第一种,可是想到会经常重装系统;而且看到forum里别人build一次大概至少需要十多个小时(下载+编译)。为了方便,决定还是选用第二种。
在PSPChina里已有人写出了devkitPro安装步骤,比较简单我就不再重复了。这里我想说的是因为经常使用Cygwin,所以就直接在Cygwin环境去编译PSP SDK里的sample,但是发现psp-config报告的sdk路径有问题,导致make命令找不到sdk的common build.mak;可是在MinGW的环境下是OK的。开始怀疑是psp-config的bug,所以自己写了个简单的psp-config来替换;可是到了编译期间psp-gcc找不到sdk的头文件,命令行明明是正确的编译器就是找不到。经过包含各种路径的测试,才恍然大悟原来MinGW与Cygwin表示盘符的方法不兼容。比如,表示d盘下的d:\devkitPro\devkitPSP
/d/devkitPro/devkitPSP /* MinGW */
/cygdrive/d/devkitPro/devkitPSP /* Cygwin */
Cygwin环境下每个盘符都是隶属于/cygdrive,而在MinGW就直接用/+盘符,DevkitPro附带的PSP toolchain当然也是用MinGW的盘符表示方法了,所以DevkitPro的PSP toolchain要搭配MinGW的环境。
最后,我简单看了一下sdk的build.mak发现里面没有用到什么shell命令,也就是说我只要简单替换Cygwin的make命令,就可以直接在Cygwin的环境下build PSP的program了。当然为了不影响Cygwin的其他program开发,于是做了个alias
alias make='/cygdrive/d/devkitPro/msys/bin/make.exe'
只有在做PSP开发的时候启用这个alias,这样即使有嵌套的Makefile也没有问题。觉得麻烦的话干脆单独开一个MinGW的窗口专门用来做编译,其他的可以在Cygwin下完成。
|