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
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設置命令行編譯環境


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM