luajit 使用 clang编译的坑

为了尝试将LuaJIT接入虚幻Lua插件之中,需要预编译LuaJIT链接库,在桌面平台问题不大,
主要是移动平台,涉及跨平台编译,因为对跨平台编译具体细节没有系统研究,这里先记录一下跨平台编译LuaJIT的主要过程

由于官方提供的编译脚本仅有MakeFile,所以暂时只能跨平台编译,在Windows Subsystem Linux中操作。
最终命令如下:

#仅针对Android arm64,32位需要安装linux i386 sdk,先略过。
make HOST_CC=clang   CROSS=/home/TestUser/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21- CC=clang

因为新版NDK使用clang作为编译器,而MakeFile里面的一些路径处理还是比较旧,在路径拼接上存在一些问题,需要修改
在MakeFile结束位置修改archive步骤:
原版:

$(LUAJIT_A): $(LJVMCORE_O)
	$(E) "AR        $@"
	$(Q)$(TARGET_AR) $@ $(LJVMCORE_O)

新版

原版路径拼接跟ndk21不太一致,先写死
TARGET_AR="/home/TestUser/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"
$(LUAJIT_A): $(LJVMCORE_O)
	$(E) "AR        $@ using $(TARGET_AR)"
	$(Q)$(TARGET_AR) -r  $@ $(LJVMCORE_O)

后续试试编写xmake脚本编译LuaJIT,MakeFile实在不如Lua脚本方便阅读。

你可能感兴趣的:(游戏引擎)