xlua 下载包中提供lua5.3的库文件,如果需要luajit或者自己添加删除的就需要自己进行编译。 Lua53版本没那么多事,主要是LuaJIt版本折腾的比较久。

工具

  • Xlua使用CMake进行编译,不管是哪个平台都需要提前安装
  • Windows 下 Visual Studio 2015 , MAC下XCODE

Windows(.dll)

  1. luajit 版本 默认使用的是 Visual Studio 2015
  2. 注意VS140COMNTOOLS环境变量以及该路径是否存在vcvars64.bat\vcvars32.bat, 不存在的话重装Visual Studio 2015或者别的地方复制过去
  3. lua53 使用cmake生成Visual Studio 2015 工程

Android(.so)

稍稍有点蛋疼,尝试过在WIndow下使用Cygwin64进行编译,不过一直提示“不可识别二进制数据“ ,解决不了就直接转Mac平台了。

Mac 平台下编译Android LuaJit 版本 链接库注意:

  1. 使用Mac OS X平台的NDK版本 android-ndk-r10e-darwin-x86_64.zip
  2. 注意NDK路径配置,不能确认就使用echo 输出看下,Xlua默认是放在User/用户名路径下
  3. 根据自身平台来选择对应的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
  1. 必要时先删除编译产生的文件夹,有时候会出现错误:
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
  1. 注意权限问题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 不同平台链接库编译的更多相关文章

  1. GO 使用静态链接库编译 生成可执行文件 使用第三方 .a 文件,无源码构造

    go build 和 go install 都需要使用源码来进行编译.但是有时候我们只有.a或者.so文件.并不能获取到第三方库的源码,这时我们需要静态链接库编译的技巧: 上图是实验前的文件分布. 使 ...

  2. 利用CMake自己创建OpenCV静态链接库

    1.准备工作: 1)完成Visual Studio2012安装: 2)下载并解压CMake3.5.0: 3)下载并解压OpenCV2.4.12: 4)下载并解压TBB44_20160128oss. 2 ...

  3. 利用GCC编译器生成动态链接库和静态链接库

    转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...

  4. VS2010编译Boost 1.57 静态链接库

    http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...

  5. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

    目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...

  6. 使用code::blocks编译windows的dll链接库

    因为机子上没有安装Visual Studio,所以找到了一种通过code::blocks编译dll的方式,踩到的坑是code::blocks默认的compiler是32位的,这样编译出的dll也是32 ...

  7. GO 使用 动态链接库(共享链接库)进行编译 生成动态链接可执行文件

    我们使用 go help buildmode 可以看到 go 可以以多种方式进行构建,默认使用静态链接库. ➜ src go help buildmode The 'go build' and 'go ...

  8. App开发流程之数据持久化和编译静态链接库

    先记录数据持久化. iOS客户端提供的常用数据持久化方案:NSUserDefaults代表的用户设置,NSKeydArchiver代表的归档,plist文件存储,SQLite数据库(包括上层使用的Co ...

  9. GCC 编译使用动态链接库和静态链接库

    1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有 ...

随机推荐

  1. 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题

    问题 A: 割点与桥 时间限制: 1 Sec  内存限制: 5 MB提交: 475  解决: 34提交 状态 算法问答 题目描述 给出一个无向连通图,找到所有的割点和桥 输入 第一行:点的个数,如果点 ...

  2. [转]nodeJS中redis初步使用

    本文转自:https://blog.csdn.net/frankenjoy123/article/details/55209637 Node.js下使用Redis,首先: 1.有一台安装了Redis的 ...

  3. 第一册:lesson nineteen。

    原文:tired and thirsty. A:What's the matter,children? B:We are tired and thirsty. A:Sit down,here. Are ...

  4. WPF 获取DataGrid 控件选中的单元格信息

    获取 DataGrid 选中的单元格的信息DataGridCellInfo cell_Info = this.studentTable.SelectedCells[0]; studentTableIt ...

  5. Python网络编程Socket之协程

    一.服务端 __author__ = "Jent Zhang" import socket import gevent from gevent import monkey monk ...

  6. Prism 学习:从本地目录加载 Module

    在 Prism 中,将外部模块加载到主程序有以下几种方式:Code.XAML.配置文件.指定模块目录:其中,如果要使用 Code 方式来加载 Module,则需要将该 Module 引用到当前项目中: ...

  7. 44.Linux君正X1000-添加st7789v显示

    由于板子LCD旧屏是ili9335型号的,旧屏有时候会断货,如果断货则使用一个st7789v型号的LCD 它们两个屏的区别在于初始化屏的参数不同,引脚都一样,也就是说需要使板子同时支持ili9335型 ...

  8. 【Java每日一题】20170327

    20170324问题解析请点击今日问题下方的“[Java每日一题]20170327”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...

  9. 【Java每日一题】20170216

    20170215问题解析请点击今日问题下方的“[Java每日一题]20170216”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...

  10. Python3 系列之 环境包管理神器 pipenv

    环境说明:Windows 10 build 17763 + Python 3.7.2 介绍 pipenv 是在 pip 与 virtualenv 基础上发展而来的,弥补了之前 virtualenv 通 ...