cocos2d-x 3.1 在linux deepin 32 下使用genbindings.py遇到的问题及解决方法

下面是我使用genbindings.py生成tolua文件遇到的问题和解决方法,因为第1次搞定后,今天又来弄的时候问题重现了,所以总结一下,给大家分享。

问题1:官方只提供ubuntu 64位的libclang.so文件,在32位机子上跑会报下面这个错误

LibclangError: libclang.so: wrong ELF class: ELFCLASS64. To provide a path to libclang use Config.set_library_path() or Config.set_library_file().

解决方法:在llvm官网下载4.3版本的llvm和clang。编译生成libclang.so.3.4。拷贝到bindings-generator/libclang/下覆盖libclang.so文件。怎么编译的那个博客现在找不到了,步骤大概是:
clang-3.4.src.tar.gz 和 llvm-3.4.src.tar.gz 。解压,然后把clang目录拷贝到llvm-3.4/tools/下。编译,在llvm-3.4同一个目录下建一个build文件夹,进入到build,执行cmake …/llvm-3.4/CMakeLists.txt

文字描述可能不清晰,目录结构如下:
. -> build
| ->llvm-3.4 -> tools -> clang -> CMakeLists.txt
|-> CMakeLists.txt

问题2: 找不到头文件,报错出现unkown type name ,原因是官方配置的android_headers路径和我电脑上的不一样,主要是gcc的版本,我的是4.8的,官方配置是4.7。如下:

details = “unknown type name ‘__locale_t’”

解决方法:修改cocos2dx.ini中的android_headers 的值把/cxx-stl/gnu-libstdc++/4.7/ 改成/cxx-stl/gnu-libstdc++/4.8/ 。有两个地方要修改。这个问题要看自己的安卓ndk的配置情况,也许你的还是4.6呢,自己可以去ndk对应的路径下找找看自己的ndk版本。

结束语:cocos2d-x 3.1对于多平台开发挺完善的,我本来是打算继续使用quick-cocos-2dx的,可是官方不支持linux环境,而我的笔记本还是thinkpad x200,装的是linux系统,对于我这这样的屌丝不用windows和没有mac。。。就只能这样子使用cocos2dx lua 了。试着移植过一次quick到linux下,没成功,问题太多了,如果有网友看到了quick的linux版本请告诉下我,谢谢了。。。