Posted on 2010-03-04 22:29
魔のkyo 阅读(420)
评论(0) 编辑 收藏 引用
最近从Xbox 360转战PS3,PS3开发我们仍然使用VS2005做IDE,编译器用的是GCC(分PPU GCC 和SPU GCC)。
在编译器项目配置上,360因为是微软做的,所以和PC开发没什么区别,Sony的PS3就有些区别了,记下来备忘
·关于链接lib
经我测试,要配置链接lib,至少有两种链接器选项设置方法:
1.一种是在 附加库路径 中指定lib的路径,而在 附加依赖项 中以 -lXXX 的形式设置lib。
2.另一种是不设置 附加库路径,直接在附加依赖项中指定lib的完整路径,可以是绝对路径也可以用编译器的宏指定相对路径。
以-lXXXX 参数形式链接的要求是lib的名字必须符合 libXXX.a的格式,在设置时省略"lib"和".a"。而我们编译的lib沿用了之前在PC平台的风格*.lib,因此只能选用第二种设置方法。
·关于CompileAs
GCC完全无视Project设置里的编译为(CompileAs)参数,默认按照文件扩展名选择按照何种语言编译,比如.c按c,语言.cpp按C++。要指定编译为何种语言可以通过命令行参数-x c或者-x c++指定。
`关于包含文件目录
GCC完全无视在VC选项中设置的包含文件目录,必须指定在Project设置里。
从汇编的角度,360和PS3都是基于PowerPC的,所以指令集大同小异,不过在一些细节上还是有所不同,比如读取一个全局变量的值到寄存器使用的指令就不一样,如何实现naked函数,阻止编译器在函数调用时保护寄存器,也有不同,改天有空再补充...