[arm64]Luajit-2.1.0-beta3 编译64位android lib

把问题定位到luajit,在编译引擎so的时候,由于没有64为的libluajit.a,所以改为使用lua64位。
这样就导致一个问题,使用luajit32位编译过的lua代码,无法加载,也就是会出现上述问题。

lua代码部分编译,所以就能正常解释上述出现的问题了。(部分lua能加载,编译过的lua无法加载)
由于luajit官网对于编译android libluajit.a文件的文档已经很陈旧了,所以下面贴上我编译的脚本

luajit 官网 http://luajit.org/install.html


环境如下:

vmvare ubuntu 1404
LuaJIT-2.1.0-beta3
android-ndk-r12b

编译32位lib使用的脚本

#!/bin/bash
make clean

NDK=/home/menglei/Downloads/android-ndk-r12b
NDKABI=21
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.9
NDKP=$NDKVER/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"

NDKARCH="-march=armv8-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"
make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF $NDKARCH"

#make clean

编译64 lib的脚本

#!/bin/bash

make clean
NDK=/home/menglei/Downloads/android-ndk-r12b
NDKABI=21
NDKVER=$NDK/toolchains/aarch64-linux-android-4.9
NDKP=$NDKVER/prebuilt/linux-x86_64/bin/aarch64-linux-android-

NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm64"

NDKARCH="-march=armv8-a "
make HOST_CC="gcc -m64" CROSS=$NDKP TARGET_FLAGS="$NDKF $NDKARCH"

将脚本放在MakeFile同级目录,然后生成的lib文件在src目录中

同时,在android层编译了lib之后,luajit.exe 和 lua51.dll也要对应生成64位的程序。
参考:https://www.jianshu.com/p/d7424d687301

找了台安装了vs2017的电脑,然后找到x64 Native Tools Command Prompt for VS 2017
在src目录下执行 msvcbuild.bat gc64 ,即可生成64为的 lua51.exe lua51.dll


https://blog.csdn.net/sinat_30800357/article/details/81109999
这篇博文写的也很好,后来我也在mac上尝试了一下,不过编译的时候失败了。
也没写清楚他用的ndk版本,和其它的一些环境相关。

你可能感兴趣的:(linux,cocos2dx)