luajit2.1 iOS编译64bit以及通用库
来源:互联网 发布:手机录制视频剪辑软件 编辑:程序博客网 时间:2024/05/22 00:27
苹果要求老的app需要在6月份后支持64位,新的app从2.1开始就必须支持64bit。由于我们用了luajit,而luajit2.0.x版本只支持32bit。在2.1版本开始支持64bit了,但目前只是alpha版本。
下面的luajit库编译后支持arm64,armv7和模拟器。即一个库支持64bit编译的所有cpu,不需要针对新老iphone做特殊处理。
下载LuaJit
通过GIT下载Luajit代码
git clone http://repo.or.cz/luajit-2.0.git进入Luajit下载代码目录签出分支v2.1
git checkout v2.1
编译脚本
在luajit-2.0的上一层目录运行
LUAJIT=./luajit-2.1DEVDIR=`xcode-select -print-path`/PlatformsIOSVER=iPhoneOS8.1.sdkSIMVER=iPhoneSimulator.sdkIOSDIR=$DEVDIR/iPhoneOS.platform/DeveloperSIMDIR=$DEVDIR/iPhoneSimulator.platform/DeveloperIOSBIN=$DEVDIR/../usr/bin/SIMBIN=$SIMDIR/usr/bin/BUILD_DIR=$LUAJIT/buildrm -rf $BUILD_DIRmkdir -p $BUILD_DIRrm *.a 1>/dev/null 2>/dev/nullecho =================================================echo ARMV7 ArchitectureISDKF="-arch armv7 -isysroot $IOSDIR/SDKs/$IOSVER"make -j -C $LUAJIT HOST_CC="gcc -m32 " CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET=armv7 TARGET_SYS=iOS cleanmake -j -C $LUAJIT HOST_CC="gcc -m32 " CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET=armv7 TARGET_SYS=iOS mv $LUAJIT/src/libluajit.a $BUILD_DIR/libluajitA7.aecho =================================================echo ARM64 ArchitectureISDKF="-arch arm64 -isysroot $IOSDIR/SDKs/$IOSVER"make -j -C $LUAJIT HOST_CC="gcc " CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET=arm64 TARGET_SYS=iOS cleanmake -j -C $LUAJIT HOST_CC="gcc " CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET=arm64 TARGET_SYS=iOS mv $LUAJIT/src/libluajit.a $BUILD_DIR/libluajit64bit.aecho =================================================echo IOS Simulator ArchitectureISDKF="-arch x86_64 -isysroot $SIMDIR/SDKs/$SIMVER -miphoneos-version-min=7.0"make -j -C $LUAJIT HOST_CFLAGS="-arch x86_64" HOST_LDFLAGS="-arch x86_64" TARGET_SYS=iOS TARGET=x86_64 cleanmake -j -C $LUAJIT HOST_CFLAGS="-arch x86_64" HOST_LDFLAGS="-arch x86_64" TARGET_SYS=iOS TARGET=x86_64 amalg CROSS=$SIMBIN TARGET_FLAGS="$ISDKF"mv $LUAJIT/src/libluajit.a $BUILD_DIR/libluajitx86_64.alibtool -o $BUILD_DIR/libluajit21.a $BUILD_DIR/*.a 2> /dev/nullmkdir -p $BUILD_DIR/Headerscp $LUAJIT/src/lua.h $BUILD_DIR/Headerscp $LUAJIT/src/lauxlib.h $BUILD_DIR/Headerscp $LUAJIT/src/lualib.h $BUILD_DIR/Headerscp $LUAJIT/src/luajit.h $BUILD_DIR/Headerscp $LUAJIT/src/lua.hpp $BUILD_DIR/Headerscp $LUAJIT/src/luaconf.h $BUILD_DIR/Headersmv $BUILD_DIR/libluajit21.a ../lib/ios
注意在编译模拟器的库时:
ISDKF="-arch x86_64 -isysroot $SIMDIR/SDKs/$SIMVER -miphoneos-version-min=7.0"
上面红色字体部分,该段主要用于编译模拟器的luajit库。由于xcode5.0后的更改,必须用这种方式指定编译为模拟器库,否则默认编译为macos.本人在这里折腾了很久。
集成
将luajit/build目录下的libluajit21.a链接到工程。
可能陷阱
由于iphone5s以上虚拟机需要x86_64支持,luajit为了支持此模式需要在other linker flags中增加参数(注意,只需要对模拟器添加参数,针对ios不能添加,否则apple不会通过审核)
-pagezero_size 10000 -image_base 100000000
可能陷阱
1: 目前luajit 2.1只是alpha版本,有没有大的bug不清楚
2:在arm64平台下的luajit的bytecode与早前的bytecode有区别无法直接在mac下编译后在arm64平台使用。它使用了最新的lj_gc64与lj_fr2。所以直接在macos下编译的lua代码不能在ios上运行。需要上传源代码在ios下编译
4 0
- luajit2.1 iOS编译64bit以及通用库
- iOS编译通用framework
- GeoIP<libGeoIP.so.1()(64bit)>以及gperftools<libprofiler.so.0()(64bit)>库的安装
- iOS开发点滴-cocoapods在64bit编译
- iOS 通用交叉编译脚本
- boost 编译 32 bit & 64 bit
- 创建iOS通用库(1)
- iOS支持64bit
- raspberry 3b 64bit 系统安装,以及交叉编译环境、调试环境的搭建
- Mingw64编译libx264 64bit
- 苹果要求所有新app以及版本更新必须支持iOS 8 SDK和64-bit
- Ubuntu9.10-64bit 下 编译 OpenCv1.1pre1
- fedora18-64 bit安装STM32 GCC编译环境(1)
- 64bit Centos6.4编译hadoop-2.5.1
- ubuntu16.04 64bit编译android5.1错误
- ubuntu16.04 64bit编译android5.1错误
- 64-bit Ubuntu 编译/运行 32-bit 程序
- 64bit centos如何编译 32bit的程序
- 开源项目源码解析-HoloGraphLibrary 源码解析
- 网络基础学习笔记二------UDP通信之客户端
- C++之 new 动态分配内存
- realloc,malloc,calloc的区别
- 读刘未鹏《暗时间》之记忆笔记
- luajit2.1 iOS编译64bit以及通用库
- 51单片机学期总结
- OBJECTPROPERTY用法整理
- css、js的相互阻塞
- ViewPager onPageChangeListener总结
- UVA 10132 File Fragmentation(字符串还原)
- Android App整体架构设计的思考(二)
- 在中文联想输入的情况下使textview控制输入的字数
- 开源项目源码解析-CircularFloatingActionMenu 源码解析