Xlua 不同平台链接库编译
xlua 下载包中提供lua5.3的库文件,如果需要luajit或者自己添加删除的就需要自己进行编译。 Lua53版本没那么多事,主要是LuaJIt版本折腾的比较久。
工具
- Xlua使用CMake进行编译,不管是哪个平台都需要提前安装
- Windows 下 Visual Studio 2015 , MAC下XCODE
Windows(.dll)
- luajit 版本 默认使用的是 Visual Studio 2015
- 注意VS140COMNTOOLS环境变量以及该路径是否存在vcvars64.bat\vcvars32.bat, 不存在的话重装Visual Studio 2015或者别的地方复制过去
- lua53 使用cmake生成Visual Studio 2015 工程
Android(.so)
稍稍有点蛋疼,尝试过在WIndow下使用Cygwin64进行编译,不过一直提示“不可识别二进制数据“ ,解决不了就直接转Mac平台了。
Mac 平台下编译Android LuaJit 版本 链接库注意:
- 使用Mac OS X平台的NDK版本 android-ndk-r10e-darwin-x86_64.zip
- 注意NDK路径配置,不能确认就使用echo 输出看下,Xlua默认是放在User/用户名路径下
- 根据自身平台来选择对应的NDK,修改NDKP 中平台为darwin-x86_64(以64位为例哈,间咨询过xlua的作者,他是在linux系统下编译的,如果你是在linux下则不用修改),修改后NDKP:
NDKP=$NDKVER/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-

4. 使用GCC取代Clang, Ndk中不存在arm-linux-androideabi-clang3.6 ,可以通过修改luajit /src/makefile 文件 切换编译器。参考:mac平台下LuaJIT-2.1.0-beta2 编译android i686-linux-android-clang: Command not found
修改之后:
ifeq (Windows,$(findstring Windows,$(OS))$(MSYSTEM)$(TERM))
HOST_SYS= Windows
HOST_RM= del
else
HOST_SYS:= $(shell uname -s)
ifneq (,$(findstring MINGW,$(HOST_SYS)))
HOST_SYS= Windows
HOST_MSYS= mingw
endif
ifneq (,$(findstring CYGWIN,$(HOST_SYS)))
HOST_SYS= Windows
HOST_MSYS= cygwin
endif
# Use Clang for OSX host. 直接采用默认gcc
#ifeq (Darwin,$(HOST_SYS))
# DEFAULT_CC= clang
#endif
endif
- 必要时先删除编译产生的文件夹,有时候会出现错误:
Make Error: The current CMakeCache.txt directory /Users/rubbyzhang/Perforce/rubbyzhang_RUBBYZHANG-MC0_7887/Redfox/Branches/OnlineBattle_xlua/ThirdParty/xLua-master/build/build_lj_x86/CMakeCache.txt is different than the directory c:/Users/rubbyzhang/Desktop/Lua/xLua-master/build/build_lj_x86 where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
- 注意权限问题chmod基本可以解决,如果解决不了可以看下账号的权限
IOS(.a)
Mac平台下,xcode安装好,基本就没啥问题了
增加删除第三方库
可以参考xlua文档<增加删除第三方库>, 修改Cmakelists.txt文件以及C#部分,以增加lpeg、struct为例,可以在cmakelist.txt中增加设置:
# 增加Lpeg
set (LPEG_SRC pb/source/lpeg.c pb/source/struct.c)
set_property(
SOURCE ${LPEG_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
list(APPEND THIRDPART_INC pb/include)
set (THIRDPART_SRC ${THIRDPART_SRC} ${LPEG_SRC})
修改好的下载链接:http://pan.baidu.com/s/1sl12IFN
参考:
mac平台下LuaJIT-2.1.0-beta2 编译android i686-linux-android-clang: Command not found
WIndows 使用VS编译 Lua5
如何编译各平台使用的库-以编译tolua为例
msvc交叉编译:使用vcvarsall.bat设置命令行编译环境
Xlua 不同平台链接库编译的更多相关文章
- GO 使用静态链接库编译 生成可执行文件 使用第三方 .a 文件,无源码构造
go build 和 go install 都需要使用源码来进行编译.但是有时候我们只有.a或者.so文件.并不能获取到第三方库的源码,这时我们需要静态链接库编译的技巧: 上图是实验前的文件分布. 使 ...
- 利用CMake自己创建OpenCV静态链接库
1.准备工作: 1)完成Visual Studio2012安装: 2)下载并解压CMake3.5.0: 3)下载并解压OpenCV2.4.12: 4)下载并解压TBB44_20160128oss. 2 ...
- 利用GCC编译器生成动态链接库和静态链接库
转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...
- VS2010编译Boost 1.57 静态链接库
http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...
- C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项
目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...
- 使用code::blocks编译windows的dll链接库
因为机子上没有安装Visual Studio,所以找到了一种通过code::blocks编译dll的方式,踩到的坑是code::blocks默认的compiler是32位的,这样编译出的dll也是32 ...
- GO 使用 动态链接库(共享链接库)进行编译 生成动态链接可执行文件
我们使用 go help buildmode 可以看到 go 可以以多种方式进行构建,默认使用静态链接库. ➜ src go help buildmode The 'go build' and 'go ...
- App开发流程之数据持久化和编译静态链接库
先记录数据持久化. iOS客户端提供的常用数据持久化方案:NSUserDefaults代表的用户设置,NSKeydArchiver代表的归档,plist文件存储,SQLite数据库(包括上层使用的Co ...
- GCC 编译使用动态链接库和静态链接库
1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有 ...
随机推荐
- JavaScript 系列博客(四)
JavaScript 系列博客之(四) 前言 本篇介绍 JavaScript 中的对象.在第一篇博客中已经说到 JavaScript 是一种''对象模型''语言.所以可以这样说,对象是 JavaScr ...
- iOS-CoreData详解与使用
上面已经说完了SQLite和FMDB以及两者的区别,本篇将讲述iOS中另一个存储方式,CoreData的使用.通读下来大约10分钟,后续还会根据项目中问题,不断更新. 一.预备知识 在了解CoreDa ...
- 《Office 365开发入门指南》上市说明和读者服务
写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...
- ls 指令的介绍
每个文件在linux下面都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢? modification time (mtime) : 当该文件的“内容数据”变更时,就会更 ...
- 2. 常见的Queue
package com.gf.conn013; import java.util.ArrayList; import java.util.Iterator; import java.util.List ...
- Java多线程之内存可见性
阅读本文约“3分钟” 共享变量在线程间的可见性 synchronized实现可见性 volatile实现可见性 —指令重排序 —as-if-serial语义 —volatile使用注意事项 synch ...
- The JRE_HOME environment variable is not defined correctly This environment
昨天启动tomcat还好好的,今天不知道抽什么风,cmd中报错: The JRE_HOME environment variable is not defined correctly This env ...
- JDK动态代理简单使用(2)
JDK动态代理使用: 使用JDK动态代理步骤: ①创建被代理的接口和类: public interface IA { void f1(String param); } public class A i ...
- Reactor模式理解
Reactor模式 也可以叫反应器模式或者应答者模式 reactor模式简介 让我们先了解一下阻塞I/O与非阻塞I/O I/O 是非常缓慢的 I/O绝对是计算机操作中最慢的.访问RAM的事件为ns级别 ...
- Java岗 面试考点精讲(基础篇01期)
即将到来金三银四人才招聘的高峰期,渴望跳槽的朋友肯定跟我一样四处找以往的面试题,但又感觉找的又不完整,在这里我将把我所见到的题目做一总结,并尽力将答案术语化.标准化.预祝大家面试顺利. 术语会让你的面 ...