文章顶部有编好的 2.1.ROLLING 2023/08/21版本源码 Android 64 和 iOS 64
luajit 目前最新的源码tag版本为
v2.1.ROLLING
- on Aug 21, 2023
应该是修正了很多bug, 我是出现下面问题才编的.
cocos2dx-lua 游戏 黑屏 并报错:
[LUA ERROR] bad light userdata pointer
编译环境为 macosx 14.2 M1处理器, ndk-r16b, xcode 15.2
编译脚本在下面, iOS和android写一起了
build.sh 层级目录如下.
#!/bin/bash
export MACOSX_DEPLOYMENT_TARGET=14.2
#这个是mac编译的脚本
# LuaJIT 的源码路径
LUAJIT=./
cd $LUAJIT
make clean
XCODEPATH=`xcode-select -print-path`
DEVDIR=$XCODEPATH/Platforms
IOSVER=iPhoneOS.sdk
# 库的最总名称
LIBNAME=libluajit2.1.0.a
# iOS 最低兼容版本,最好与需要嵌入 LuaJIT 的 App 的最低兼容设置保持一致.
MINVERSION=12.0
IOSDIR=$DEVDIR/iPhoneOS.platform/Developer
# xctoolchain 可以使用 xcode-select --install 命令安装.
# xctoolchain 和模拟器中, 目前已不包含 gcc 等命令,可以从系统其它位置复制到 $IOSBIN 目录.
# 命令的具体路径,可以执行 xcodebuild -find gcc 获得.
IOSBIN=$XCODEPATH/Toolchains/XcodeDefault.xctoolchain/usr/bin/
BUILD_DIR=$LUAJIT/build
rm -rf $BUILD_DIR
mkdir -p $BUILD_DIR
rm *.a 1>/dev/null 2>/dev/null
echo =================================================
echo ARM64 Architecture
ISDKF="-arch arm64 -isysroot $IOSDIR/SDKs/$IOSVER -miphoneos-version-min=$MINVERSION"
make -j -C $LUAJIT HOST_CC="gcc " CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET=arm64 TARGET_SYS=iOS clean
make -j -C $LUAJIT HOST_CC="gcc " CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET=arm64 TARGET_SYS=iOS
mv $LUAJIT/src/libluajit.a $BUILD_DIR/libluajit64bit.a
libtool -o $BUILD_DIR/$LIBNAME $BUILD_DIR/*.a 2> /dev/null
mkdir -p $BUILD_DIR/Headers
cp $LUAJIT/src/lua.h $BUILD_DIR/Headers
cp $LUAJIT/src/lauxlib.h $BUILD_DIR/Headers
cp $LUAJIT/src/lualib.h $BUILD_DIR/Headers
cp $LUAJIT/src/luajit.h $BUILD_DIR/Headers
cp $LUAJIT/src/lua.hpp $BUILD_DIR/Headers
cp $LUAJIT/src/luaconf.h $BUILD_DIR/Headers
mv $BUILD_DIR/$LIBNAME ./lib/ios/$LIBNAME
rm -rf $BUILD_DIR
cd $LUAJIT
cd ..
# #编译 android-arm64-v8a
# make clean
# NDK=/Users/a1/repo/NDK
# NDKABI=21
# NDKTRIPLE=aarch64-linux-android
# NDKVER=$NDK/toolchains/$NDKTRIPLE-4.9
# NDKP=$NDKVER/prebuilt/darwin-x86_64/bin/$NDKTRIPLE-
# NDKF="-isystem $NDK/sysroot/usr/include/$NDKTRIPLE -D__ANDROID_API__=$NDKABI"
# NDK_SYSROOT_BUILD=$NDK/sysroot
# NDK_SYSROOT_LINK=$NDK/platforms/android-$NDKABI/arch-arm64
# make HOST_CC="gcc" CROSS=$NDKP TARGET_FLAGS="$NDKF" TARGET_SYS=Linux TARGET_SHLDFLAGS="--sysroot $NDK_SYSROOT_LINK" TARGET_LDFLAGS="--sysroot $NDK_SYSROOT_LINK" TARGET_CFLAGS="--sysroot $NDK_SYSROOT_BUILD"
# mv ./src/libluajit.a ./lib/libluajit.a
编译iOS遇见的问题
/Applications/Xcode.app/Contents/Developer/Platforms/Toolchains/XcodeDefault.xctoolchain/usr/bin/gcc command not found
1> 先安装 toolchains:
xcode-select --install
2> 找下缺失本机上对应命令的真实路径:
xcodebuild -find gcc
3> 如果能找到,就把命令复制到缺失命令的位置;如果本机找不到,就从网上搜下安装教程。
我是能找到, 通过 下面这个命令解决问题, 自己可以根据实际修改.
ln -Fs /找到的gcc路径 /Applications/Xcode.app/Contents/Developer/Platforms/Toolchains/XcodeDefault.xctoolchain/usr/bin/gcc
参考了这篇文章: 【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库-腾讯云开发者社区-腾讯云