Xlua 不同平台链接库编译

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-

mark

  1. 使用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设置命令行编译环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值