一些引擎基于 python 编写, 想要在主机平台运行这些引擎 ( renpy etc. ) 需要首先编译 cpython.
- - -
第一步选择工具链:
我使用 cygwin + 主机平台的 clang 作为工具链基础
接下来, git clone cpython
cpython的项目布局如下:
项目用 autoconf 构建, 需要先执行 ./configure 去生成 Makefile 再用 make 去编译.
打开 pyconfig.h, 其中内容如下:
pyconfig.h 由 autoconf 生成, autoconf 将会根据用户需要编译的平台在 pyconfig.h 里加上各种 #define 指令, 例如如果目标 os 上有 mmap, pyconfig.h 就会有 #define HAVE_MMAP 类似字段
鉴于各个 os 对 syscall 做出的限制各不相同, 选择合适的 pyconfig.h 就非常重要
这就需要在 ./configure 的时候选择合适的环境变量 (CXXFLAGS CPPFLAGS LDFLAGS etc.)
- - -
主机平台 ( ns / ps / xbox ) 的 sdk 一般附带有配套的示例代码, 通常以 visual studio solution 的方式给出.
点开 .sln, 把 visual studio 选择 echo command lines
尝试编译一个简单的 hello world sample, 复制 command lines 输出
编译这个 hello world 的参数和编译 cpython 到该平台所需的参数理论上是一样的.
这个时候可以编写脚本 asd.sh
export CPPFLAGS="XXX"
export LDFLAGS="XXX"
./configure
- - -
以上命令将会生成合适的 Makeflie
用 Makefile 生成 libpython.a ( 静态库 )
在使用 python 的时候只需要静态链接到 libpython.a 就可以.
- - -
以上是编译 python runtime 的第一步. 到目前为止不太需要写代码 ( 只需要写一些简单的 shell script )
后面有空慢慢写开发调试环境的部署和 FAL ( Filesystem Abstraction Layer ) 文件系统抽象层的部
暂无关于此日志的评论。