系统环境
优山美地 OS X Yosemite
Xcode 6.1.1
cocos2d-x 3.1.1
下载LuaJit
通过GIT下载Luajit代码
git clone http://repo.or.cz/luajit-2.0.git
进入Luajit下载代码目录签出分支v2.1
git checkout v2.1
编辑脚本编译Luajit v2.1
- [list=1]#!/usr/bin/env bash
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- LIPO="xcrun -sdk iphoneos lipo"
- STRIP="xcrun -sdk iphoneos strip"
- IXCODE=`xcode-select -print-path`
- ISDK=$IXCODE/Platforms/iPhoneOS.platform/Developer
- ISDKVER=iPhoneOS8.1.sdk
- ISDKP=$IXCODE/usr/bin/
- if [ ! -e $ISDKP/ar ]; then
- sudo cp $ISDK/usr/bin/ar $ISDKP
- fi
- if [ ! -e $ISDKP/ranlib ]; then
- sudo cp $ISDK/usr/bin/ranlib $ISDKP
- fi
- if [ ! -e $ISDKP/strip ]; then
- sudo cp $ISDK/usr/bin/strip $ISDKP
- fi
- make clean
- ISDKF="-arch arm64 -isysroot $ISDK/SDKs/$ISDKVER"
- make HOST_CC="gcc " CROSS="$ISDKP" TARGET_FLAGS="$ISDKF" TARGET=arm64 TARGET_SYS=iOS
也可以将git下的luajit复制到cocos2d-x对应的luajit路径下
之后将附件里的shell脚本替换目录下存在的build_ios.sh脚本,运行该脚本可以生成一个新的Luajit.a包以及一套完整的支持arm64的lib for cocos2dx3.1.1。
只要大家自行替换项目目录下
cocos2d-x/external/ 对应的ios目录下的.a文件就可以
同时XCODE6新升级后需要有几点补丁修改
修改1:
在AppDelegate.cpp加入代码
extern "C"
{
#if defined (__unix) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#ifndef __ENABLE_COMPATIBILITY_WITH_UNIX_2003__
#define __ENABLE_COMPATIBILITY_WITH_UNIX_2003__
#include <stdio.h>
#include <dirent.h>
FILE *fopen$UNIX2003( const char *filename, const char *mode )
{
return fopen(filename, mode);
}
size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
{
return fwrite(a, b, c, d);
}
char *strerror$UNIX2003( int errnum )
{
return strerror(errnum);
}
DIR *opendir$INODE64(const char * a)
{
return opendir(a);
}
struct dirent *readdir$INODE64(DIR *dir)
{
return readdir(dir);
}
#endif
#endif</dirent.h></stdio.h>
}
修改2:
iphone5s以上虚拟机需要x86_64支持
luajit为了支持此模式需要在other linker flags中增加参数 -pagezero_size 10000 -image_base 100000000
以上就可以保证在新版的xcode6.1.1中完美的运行arm64与虚拟机x86_64的luajit代码了。
最后感谢xl同学给予的帮助!
生成好的.a文件与luajit打包sh脚本请通过百度网盘下载
点击下载
欢迎各位同学加群:296733909