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. Go Web:Handler

    Multiplexer根据URL将请求路由给指定的Handler.Handler用于处理请求并给予响应.更严格地说,用来读取请求体.并将请求对应的响应字段(respones header)写入Resp ...

  2. [转]Docker学习之四:使用docker安装mysql

    本文转自:https://blog.csdn.net/qq_19348391/article/details/82998391 Docker学习之一:注册Docker Hub账号 Docker学习之二 ...

  3. [转]从minio中读取文件流进行下载文件

    本文转自:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678 一.获取Minio连接    public static String ...

  4. 不容易系列之一(hdu1465)错排+递推

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. 2.对于所有对象都通用的方法_EJ

    第8条: 覆盖equals时请遵守通用约定 我们在覆盖equals方法时,必须遵守它的通用约定: 1.自反性.对于任何非null的引用值x,x.equals(x)必须返回true: 2.对称性.对于任 ...

  6. Java基础-一文搞懂位运算

    在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!), ...

  7. JavaScript是如何工作: 深入探索WebSocket和HTTP/2与SSE + 如何选择正确的路径!

    原文:<JavaScript是如何工作: 深入探索 websocket 和HTTP/2与SSE +如何选择正确的路径! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 文章底部分 ...

  8. LNMP 一键安装 yum install php-mcrypt libmcrypt libmcrypt-devel

    centos源不能安装libmcrypt-devel,由于版权的原因没有自带mcrypt的包 有两种方法解决,一种是使用第三方源,这样还可以使用yum来安装,简单方便,坏处是第三方源多少有中不可靠的感 ...

  9. javascript中startswith和endsWidth 与 es6中的 startswith 和 endsWidth

    在javascript中使用String.startswith和String.endsWidth 一.String.startswith 和 String.endsWidth 功能介绍 String. ...

  10. C# 任务 数据加载不影响其他操作

    private void button1_Click(object sender, EventArgs e) { //this.timer1.Enabled = true; Task t1 = new ...