Just In Time Compiler,在运行时编译lua语言的编译器。
下载luajit的源代码,目前最新的版本是v2.1
Windows编译dll、lib
Windows的编译比较简单,选择一个vs的build tools:
切换到源码目录(cmd中切换盘符直接输入盘符即可)
,执行src/msvcbuild.bat
脚本即可
编译Android平台*.a、*.so
luajit官网介绍的如何编译Android非常简洁,仅仅展示了如下的代码:
NDKDIR=/opt/android/ndk NDKBIN=$NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin NDKCROSS=$NDKBIN/arm-linux-androideabi- NDKCC=$NDKBIN/armv7a-linux-androideabi16-clang make HOST_CC="gcc -m32" CROSS=$NDKCROSS \ STATIC_CC=$NDKCC DYNAMIC_CC="$NDKCC -fPIC" \ TARGET_LD=$NDKCC TARGET_AR="$NDKBIN/llvm-ar rcus" \ TARGET_STRIP=$NDKBIN/llvm-strip
Android平台的编译涉及到ndk,它这里也没说明ndk版本,导致我尝试了非常多的版本后,toolchain每个版本都是有差异的,更别说后边的文件,有的根本就对不上,最后选择r14b。
在执行make命令编译时,有许多的选项,这个只能自己去Makefile中从源码中获取其含义了。
踩坑
不建议在Windows上进行Android的编译,即使你使用cygwin
,mysys2
等跨平台编译环境,你也会遇到非常多的问题,而且这些问题都涉及到系统头文件缺失,类型丢失等各种奇葩的问题,这些问题非常棘手,会浪费你非常多的时间。
如果实在找不到linux主机,可以考虑安装一个虚拟机,如果这都感觉麻烦,并且电脑的磁盘空间,性能有限,可以考虑github actions,微软爸爸提供了非常多的系统环境,另外github也提供了一定使用额度的code space,选择一个虚拟环境,在web vscode环境中进行开发,其开发体验和本机非常接近!
我新建了一个GitHub仓库,并编写了一个构建脚本,同时配置了GitActions,并将编译好的.a
上传到了release上,不想编译的自取即可。