您的位置:首页 > 移动开发 > Unity3D

unity mono 库编译笔记

2016-10-12 11:01 549 查看
编译环境 ubuntu 64

1.环境变量,可以不用配置,

external/buildscripts/build_runtime_android.sh中会自动下载对应的版本,最好不要修改,版本库不一致可能导致编译失败

#指定android版本

export ANDROID_PLATFORM=android-9 
GCC_PREFIX=arm-linux-androideabi-

#指定gcc版本

GCC_VERSION=4.8

OUTDIR=builds/embedruntimes/android

CWD="$(pwd)"

PREFIX="$CWD/builds/android"

BUILDSCRIPTSDIR=external/buildscripts

#设置sdk版本号
perl ${BUILDSCRIPTSDIR}/PrepareAndroidSDK.pl -ndk=r10e -env=envsetup.sh && source envsetup.sh

编译过程会自动下载一个android库,unity 5.4 的存储路径变掉了和旧版本不一样,可能更有利于后期版本公用吧

KRAIT_PATCH_PATH="${CWD}/../../android_krait_signal_handler/build"

5.4 以前的路径

KRAIT_PATCH_PATH="${CWD}/external/android_krait_signal_handler/build"

2错误:

/usr/bin/env: ‘perl -w’: No such file or directory

make: *** No rule to make target 'clean'.  Stop.

 android_krait_signal_handler 目录下 build.pl 需要修改#!/usr/bin/env perl -w 为#!/usr/bin/perl -w否则可能会报 perl -w 命令不存在的错误,导致该库编译失败,导致接下来的环境检测通不过

3错误:

make: /home/xxx/android-ndk_auto-r10e/toolchains/arm-linux-androideabi-clang3.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found

make: *** [obj/local/armeabi/objs/krait-signal-handler/krait_signal_handler.o] Error 127
zip warning: name not matched: *.a

  adding: build.txt (deflated 2%)

make: *** No rule to make target 'clean'.  Stop.
PrepareAndroidSDK::GetAndroidSDK(undef, undef, "r9");

 android_krait_signal_handler 库的编译又需要使用android-ndk-r9 编译,如果系统环境变量设置了android-ndk-r10e 的环境变量,可能导致gcc版本不一致,编译失败

4错误:

checking whether the C compiler works... no

configure: error: in `/home/xxx/Desktop/work/5.3/mono':

configure: error: C compiler cannot create executables

See `config.log' for more details

Configure FAILED!

上边几个错误都能导致该错误发生,事实上环境有错误,都会导致改错误,可能是android_krait_signal_handler 编译失败,也可能是依赖库没有安装导致查看config.log可以看到详细错误:

vim ./config.log

oideabi/bin/ld: error: cannot find -lkrait-signal-handler

collect2: error: ld returned 1 exit status

configure:4569: $? = 1

configure:4607: result: no

configure: failed program was:

缺少的库都会在此显示,如果缺少android_krait_signal_handler ,说明该库编译失败,解决2,3错误即可正常编译,如果缺少其他库,自行安装,如:

error while loading shared libraries: libz.so.1: cannot open shared object 

缺少libz.so.1库,百度得知需要安装:

sudo apt-get install lib32ncurses5 lib32z1


其他错误可类似查看config.log 寻找对应解决方案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d Unity mono