热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于ios下arm64luajitv2.1编译

转自:http:blog.csdn.netodiecnarticledetails42499233系统环境优山美地OSXYosemiteXcode6.1.1cocos

转自:http://blog.csdn.net/odiecn/article/details/42499233

系统环境

优山美地 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

 

#!/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 ]; thensudo cp $ISDK/usr/bin/ranlib $ISDKP
fi
if [ ! -e $ISDKP/strip ]; thensudo cp $ISDK/usr/bin/strip $ISDKP
fimake 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

#include

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

}

 

修改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脚本请通过百度网盘下载
点击下载

实际上在arm64平台下的luajit的bytecode与早前的bytecode有区别无法直接在mac下编译后在arm64平台使用。它使用了最新的lj_gc64与lj_fr2。所以我们的bytecode编译工作不得不转移到arm64平台下进行,也就是我们目前的iphone5s,iphone6等。为了bytecode我写了一个简单的生成工具,用于编译工程。

工具包使用的是cocos2d-x 3.1.1版本的luajit,如何让3.1.1使用luajit for arm64在上一篇文章我已经详细的介绍过了。工具包使用了另一个lua扩展工具lfs,详细说明:http://math2.org/luasearch/lfs.html。以及cocos2dx本已捆定了的luasocket库。

准备工作:

1.在内网中创建一个ftp服务器,windows自带了ftp组件,具体如何配置请自行百度。

2.源码放入到src/source目录下

3.运行程序在arm64平台上后,程序会自动上传编译后的源码到ftp的release目录下,并自动创建目录结构。

4.main.lua为程序入口,ftpServer为你ftp服务的ip地址,ftpUser为用户名,ftpPassword为密码

 

打包工具源码下载地址

 



推荐阅读
  • iOS开发Debug和Release的理解
    2019独角兽企业重金招聘Python工程师标准参考:http:blog.csdn.netmad1989articledetails406580331&# ... [详细]
  • Xcode离线安装帮助文档1.在线查看帮助文件:Xcode下查看帮助文件,菜单Help-DeveloperDocumentation在右上角搜索框中即可检索,但速度很慢 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • PHP引用的概念和用法详解
    本文详细介绍了PHP中引用的概念和用法。引用是指不同的变量名访问同一个变量内容,类似于Unix文件系统中的hardlink。文章从引用的定义、作用、语法和注意事项等方面进行了解释和示例。同时还介绍了对未定义变量使用引用的情况,以及在函数和new运算符中使用引用的注意事项。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • Answer:Theterm“backslash”isonofthemostincorrectlyusedtermsincomputing.People ... [详细]
  • imnewtotheswiftandxcodeworld,soimhavingaproblemtryingtointegrateapackagetomypro ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • WebDAV之葫芦儿·派盘+天悦日记
    天悦日记支持webdav方式连接葫芦儿派盘。是一款清爽简约的日记记录工具,通过天悦日记app随时随地快速写日记,更有智能数据统计分析报表,多端同步多种备份,本地备份和基于Web ... [详细]
  • uboot与linux驱动1.uboot本身是裸机程序(1)在裸机中本来是没有驱动概念的(狭义的驱动概念是指在操作系统中用来具体操控硬 ... [详细]
  • 【BP靶场portswigger服务端10】XML外部实体注入(XXE注入)9个实验(全)
    前言:介绍:博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。殊荣:CSDN网络安 ... [详细]
  • Docker安装Rabbitmq(配合宝塔)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker安装Rabbitmq(配合宝塔)相关的知识,希望对你有一定的参考价值。一、事前准备 ... [详细]
author-avatar
yeszio
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有