luajit ios arm64 编译bytecode

纠正:quick2.2.6的lua5.1.5字节码可以只用一套字节码,虽然不知道是怎么回事,感觉是强制在64位的机器上用32位的字节码。
而这个32 64都可以用的分支我在lua官网查看,并没有找到。不知道这个是否是cocos官方修改的。

1.先做一个比对 lua luajit 32 64 bytecode 执行结果

测试代码 

AppEntry.lua 

print("Hello Lua Compile")

Version.lua

print("luaversion", _VERSION)
local jit = require("jit")
print("jitversion", jit.version_num)

lua32 lua64 luajit32 luajit64 是用相对应的lua,luajit编译的bytecode

luajit ios arm64 编译bytecode_第1张图片


c++测试代码:

luajit ios arm64 编译bytecode_第2张图片

2.测试版本 luajit2.1beta

iphone5 测试结果:

{
	cocos2d.x.version: cocos2d-x-3.10
	cocos2d.x.compiled_with_gl_state_cache: true
	cocos2d.x.build_type: DEBUG
	gl.supports_vertex_array_object: true
	cocos2d.x.compiled_with_profiler: false
	gl.renderer: PowerVR SGX 543
	gl.vendor: Imagination Technologies
	gl.version: OpenGL ES 2.0 IMGSGX543-113.3
	gl.supports_S3TC: false
	gl.supports_ATITC: false
	gl.supports_ETC1: false
	gl.supports_OES_packed_depth_stencil: true
	gl.max_texture_units: 8
	gl.supports_NPOT: true
	gl.supports_OES_depth24: true
	gl.supports_discard_framebuffer: true
	gl.supports_BGRA8888: false
	gl.supports_PVRTC: true
	gl.max_texture_size: 4096
	gl.max_samples_allowed: 4
}


Quick-Cocos2d-x C++ support ready.
lua32
[LUA ERROR] load "/private/var/mobile/Containers/Bundle/Application/C1919290-9570-40B9-BE0F-70E969724493/ARPG iOS.app/src/entry/AppEntry.lua32", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
lua64
[LUA ERROR] load "/private/var/mobile/Containers/Bundle/Application/C1919290-9570-40B9-BE0F-70E969724493/ARPG iOS.app/src/entry/AppEntry.lua64", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
luajit32
[LUA-print] Hello Lua Compile
luajit64
[LUA ERROR] load "/private/var/mobile/Containers/Bundle/Application/C1919290-9570-40B9-BE0F-70E969724493/ARPG iOS.app/src/entry/AppEntry.luajit64", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
lua
[LUA-print] Hello Lua Compile
[LUA-print] luaversion	Lua 5.1
[LUA-print] jitversion	20100

结果:lua32 lua64 luajit64 报错 lua luajit32 正确执行


iphoen5s 测试结果:

{
	gl.supports_vertex_array_object: true
	cocos2d.x.version: cocos2d-x-3.10
	gl.vendor: Apple Inc.
	gl.supports_PVRTC: true
	gl.renderer: Apple A7 GPU
	cocos2d.x.compiled_with_profiler: false
	gl.supports_S3TC: false
	gl.version: OpenGL ES 2.0 Apple A7 GPU - 75.11.5
	cocos2d.x.build_type: DEBUG
	gl.max_texture_size: 4096
	gl.supports_ETC1: false
	gl.supports_BGRA8888: false
	gl.max_texture_units: 8
	gl.max_samples_allowed: 4
	gl.supports_OES_packed_depth_stencil: true
	gl.supports_ATITC: false
	gl.supports_NPOT: true
	gl.supports_discard_framebuffer: true
	cocos2d.x.compiled_with_gl_state_cache: true
	gl.supports_OES_depth24: true
}


Quick-Cocos2d-x C++ support ready.
lua32
[LUA ERROR] load "/var/mobile/Containers/Bundle/Application/87C819A8-EFD1-46AD-A4B2-3AF684817CD2/ARPG iOS.app/src/entry/AppEntry.lua32", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
lua64
[LUA ERROR] load "/var/mobile/Containers/Bundle/Application/87C819A8-EFD1-46AD-A4B2-3AF684817CD2/ARPG iOS.app/src/entry/AppEntry.lua64", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
luajit32
[LUA ERROR] load "/var/mobile/Containers/Bundle/Application/87C819A8-EFD1-46AD-A4B2-3AF684817CD2/ARPG iOS.app/src/entry/AppEntry.luajit32", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
luajit64
[LUA-print] Hello Lua Compile
lua
[LUA-print] Hello Lua Compile
[LUA-print] luaversion	Lua 5.1
[LUA-print] jitversion	20100

结果:lua32 lua64 luajit32 报错  lua luajit64 正确执行

3.测试版本 lua5.1

iphone5测试结果:

{
	cocos2d.x.version: cocos2d-x-3.10
	cocos2d.x.compiled_with_gl_state_cache: true
	cocos2d.x.build_type: DEBUG
	gl.supports_vertex_array_object: true
	cocos2d.x.compiled_with_profiler: false
	gl.renderer: PowerVR SGX 543
	gl.vendor: Imagination Technologies
	gl.version: OpenGL ES 2.0 IMGSGX543-113.3
	gl.supports_S3TC: false
	gl.supports_ATITC: false
	gl.supports_ETC1: false
	gl.supports_OES_packed_depth_stencil: true
	gl.max_texture_units: 8
	gl.supports_NPOT: true
	gl.supports_OES_depth24: true
	gl.supports_discard_framebuffer: true
	gl.supports_BGRA8888: false
	gl.supports_PVRTC: true
	gl.max_texture_size: 4096
	gl.max_samples_allowed: 4
}


Quick-Cocos2d-x C++ support ready.
lua32
[LUA-print] Hello Lua Compile
lua64
[LUA ERROR] load "/private/var/mobile/Containers/Bundle/Application/6D0A8DB5-4F6B-4174-A217-2CADA5DBC566/ARPG iOS.app/src/entry/AppEntry.lua64", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
luajit32
[LUA ERROR] load "/private/var/mobile/Containers/Bundle/Application/6D0A8DB5-4F6B-4174-A217-2CADA5DBC566/ARPG iOS.app/src/entry/AppEntry.luajit32", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
luajit64
[LUA ERROR] load "/private/var/mobile/Containers/Bundle/Application/6D0A8DB5-4F6B-4174-A217-2CADA5DBC566/ARPG iOS.app/src/entry/AppEntry.luajit64", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
lua
[LUA-print] Hello Lua Compile
[LUA-print] luaversion	Lua 5.1
can not get file data of /usr/local/lib/lua/5.1/?/init.luajit.lua
[LUA ERROR] [string "/private/var/mobile/Containers/Bundle/Appli..."]:2: module 'jit' not found:
	no field package.preload['jit']
	no file './jit.lua'
	no file '/usr/local/share/lua/5.1/jit.lua'
	no file '/usr/local/share/lua/5.1/jit/init.lua'
	no file '/usr/local/lib/lua/5.1/jit.lua'
	no file '/usr/local/lib/lua/5.1/jit/init.lua'
	no file './jit.so'
	no file '/usr/local/lib/lua/5.1/jit.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'
结果: lua64 luajit32 luajit64 报错  lua lua32 正确执行 

iphone5s测试结果:

{
	gl.supports_vertex_array_object: true
	cocos2d.x.version: cocos2d-x-3.10
	gl.vendor: Apple Inc.
	gl.supports_PVRTC: true
	gl.renderer: Apple A7 GPU
	cocos2d.x.compiled_with_profiler: false
	gl.supports_S3TC: false
	gl.version: OpenGL ES 2.0 Apple A7 GPU - 75.11.5
	cocos2d.x.build_type: DEBUG
	gl.max_texture_size: 4096
	gl.supports_ETC1: false
	gl.supports_BGRA8888: false
	gl.max_texture_units: 8
	gl.max_samples_allowed: 4
	gl.supports_OES_packed_depth_stencil: true
	gl.supports_ATITC: false
	gl.supports_NPOT: true
	gl.supports_discard_framebuffer: true
	cocos2d.x.compiled_with_gl_state_cache: true
	gl.supports_OES_depth24: true
}


Quick-Cocos2d-x C++ support ready.
lua32
[LUA ERROR] load "/var/mobile/Containers/Bundle/Application/D3F2BE56-5611-498C-B70E-EFF67E125CA0/ARPG iOS.app/src/entry/AppEntry.lua32", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
lua64
[LUA-print] Hello Lua Compile
luajit32
[LUA ERROR] load "/var/mobile/Containers/Bundle/Application/D3F2BE56-5611-498C-B70E-EFF67E125CA0/ARPG iOS.app/src/entry/AppEntry.luajit32", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
luajit64
[LUA ERROR] load "/var/mobile/Containers/Bundle/Application/D3F2BE56-5611-498C-B70E-EFF67E125CA0/ARPG iOS.app/src/entry/AppEntry.luajit64", error: syntax error during pre-compilation.
[LUA ERROR] (null)
[LUA ERROR] 
stack traceback:
lua
[LUA-print] Hello Lua Compile
[LUA-print] luaversion	Lua 5.1
can not get file data of /usr/local/lib/lua/5.1/?/init.luajit.lua
[LUA ERROR] [string "/var/mobile/Containers/Bundle/Application/D..."]:2: module 'jit' not found:
	no field package.preload['jit']
	no file './jit.lua'
	no file '/usr/local/share/lua/5.1/jit.lua'
	no file '/usr/local/share/lua/5.1/jit/init.lua'
	no file '/usr/local/lib/lua/5.1/jit.lua'
	no file '/usr/local/lib/lua/5.1/jit/init.lua'
	no file './jit.so'
	no file '/usr/local/lib/lua/5.1/jit.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'

结果:lua32 luajit32 luajit64 报错  lua lua64 正确执行

先前luajit arm64编译都是在手机上编译然后上传到服务器上的,最近发现不在手机上也能编译,就是要开启LUAJIT_ENABLE_GC64

我在lj_arch.h 加入这个

#define LUAJIT_ENABLE_GC64

然后在mac上同样编译出ios arm64能运行的bytecode。

总结:

1.各版本bytecode是不能互用的,如果又想支持armv7 arm64 的话 就是必须用两套bytecode。

2.如果只想用一套代码。就不要编译bytecode。


上面测试资源:

http://download.csdn.net/detail/lovehappy108/9427785

你可能感兴趣的:(Lua,cocos2d-x)