[收藏]基于devkitPro的PSP开发环境搭建指南

来源:互联网 发布:如何购买手机号数据 编辑:程序博客网 时间:2024/06/04 18:46

PlayStation Portable开发环境的搭建

说明:
原本准备用CYGWIN搭建的,但发现难度太大,出了好多错,网上也没搜索到好的解决方法,最后放弃。下面是从〈从灰狼和毛毛的窝〉中拷出来的。因为完全足以引导环境搭建,这里只做收藏。稍做修改。向灰狼兄表示感谢。



这里我选择了devkitPro。安装时安装程序将会从网络下载所需的安装组件。安装完成后需要在环境变量
中加上PSPSDK,其变量值为D:/devkitPro/devkitPSP/psp/sdk(这里假设devkitPro安装在D盘的devkitPro目录下面)。
devkitPro已经为你设置好了路径,今后在命令提示符中任何文件夹下面都可以使用make命令生成项目。

尝试编译一个Sample
在你的devkitPro/devkitPSP/psp/sdk/samples/路径下面你可以找到许多示例,在命令提示符中进入任何
一个文件夹中,找到makefile,在提示符下输入:
make SCEkxploit
编译成功,会得到两个文件夹和一些文件。文件夹名称诸如“%__SCE__项目名”这样的形式。
如果有了,那么恭喜你,可以将两个文件夹放到PSP的
PSP/GAME150
文件夹下面,然后运行一下看看。如果你没有编译成功,就换个例子试试看,我的建议是尝试一下
samples/controller/basic,
因为这个例子没有额外的文件依赖,不会出现找不到文件的情况。不知道你有没有成功运行你的
自制程序呢?没有的话也不要失望,我们继续往下看。

生成适用于3.71系统的自制程序
按照上述办法编译生成的自制程序是一个适用于1.50内核的程序,在新版系统上或许无法运行。
有些朋友如果为了玩模拟器而给PSP打过1.5内核补丁就可以直接运行这个例子。我们现在改变编译方式,
让自制程序也能运行在3.71系统上面。打开源代码目录下面的makefile,找到这一行:
include $(PSPSDK)/lib/build.mak
在它之前任何一行加入这两行内容:
BUILD_PRX=1
PSP_FW_VERSION=371
这将告诉编译器我们编译一个3.71内核的自制程序,同时编译出来的还有一个prx文件。prx文件是
3.71系统自制程序的运行方式。现在再使用make编译一次代码,注意这回不要使用SCEkxploit附加
参数,然后我们会得到几个文件。和之前生成的文件略有不同,这回多出来一个prx文件,而没有
原来两个文件夹。自己建立一个文件夹,将prx和EBOOT.PBP放进去,然后将文件夹复制到PSP上的
PSP/GAME371
文件夹下面(看清楚,不一样了哦,不要放错!),启动我们的程序。

接下来直接把EBOOT.PBP和controller_basic.prx拷入PSP的PSP/GAME371目录里就可以体验啦!
注意:必须在PSP/GAME371目录里新建个文件夹,然后把上述两个文件放进去。要不然在PSP上看不到。

怎样,是否对PSP自制软件的开发有了一定的熟悉?现在你可以尝试编译一些其他示例,玩够了回来我们继续^_^

VS2005下PSP开发项目的搭建
回到我们熟悉的IDE上面来。运行VS2005,新建一个项目,在“项目类型”中选择“Visual C++”,
“模版”中选择“生成文件项目”,输入你的项目名称,确定。在向导中的“设置‘调试’配置”
里,“生成命令行”中输入:
make SCEkxploit
如果是3.71内核,输入make就可以了。“清除命令”处输入:
make clean
“重新生成命令行”处输入:
make rebuild SCEkxploit(3.71为make rebuild)
发行配置默认与调试配置相同,所以直接点“完成”就可以完成项目的建立。
现在建立一个makefile在项目文件夹下面,注意:在VS2005中,这个过程是由IDE自动完成的,我们现在
只是“借鸡生蛋”,使用VS2005的代码自动完成等功能,但是对于代码的编译控制只能由手动完成。
这个makefile建议参考示例中的makefile,我说几点需要注意的地方:
1、TARGET关键词后面是生成的文件名称,起一个简单表意的名称就行
2、OBJS关键词后面是编译时需要生成的目标文件名称,如果你有多个源代码就需要在这里添加对应的.o
目标文件,这样才能正确编译全部源码并最终连接到一起。文件名之间用空格分开
3、PSP_EBOOT_TITLE关键词是指生成出来的程序在PSP中所显示的标题

生成支持C++语言的项目
devkitPro提供的示例都是c语言代码,只要将扩展名改成cpp编译器就会自动按照C++语言规范编译,
这一点可以参考devkitPro/devkitPSP/psp/sdk/lib/build.mak文件内容进行理解。但是这样编译的代码
在你new一个class的时候会得到这样一个错误提示
undefined reference to `operator new(unsigned int)'
这是由于C++库文件默认没有加载的缘故(这个问题曾经困扰了我一段时间,这就是依赖IDE的怨念- -|||),
打开makefile,依然是要在
include $(PSPSDK)/lib/build.mak
之前加上一句话
LIBS = -lstdc++
这样就挂上了标准C++的库文件,然后成功编译你的程序吧。
顺便说一句LIBS关键词是加载库文件的设置,设置方法是“-l库文件名”,中间不要加空格。库文件可以在
devkitPro/devkitPSP/psp/lib路径中找到,那些扩展名为.a的文件就是

这样,就完成了PSP开发环境的搭建,学到最多的或许是makefile的用法吧,当然这也是之前过度依赖IDE以及
缺乏对代码编译过程的了解所导致的。:p

一些提示:
PSP使用的图形库应该是基于OpenGL API,所以开发PSP程序时候不妨在PC端建立一套与PSP对应的OpenGL函数
关系,这样可以很方便在PC上面调试好程序后,快速将代码移植到PSP上面,避免了PSP调试不便的麻烦。

跨平台开发最关键的一点就是开发者自己建立起平台之间功能实现的对应关系,这样可以将一些底层功能快速
替换以将移植时所需的代码修改量减到最小。

多多参考Sample中的例子,你将能够获得足够的帮助。

后记:
希望这篇文章能够对于广大仍然在探索阶段的PSP开发人员以及对跨平台开发还怀有一丝畏惧的开发者朋友们
一个帮助,也希望早日看到更多国人开发的优秀PSP自制软件乃至PSP游戏的出现。

 
原创粉丝点击