unity mono 库编译笔记

来源:互联网 发布:淘宝上怎么发布宝贝 编辑:程序博客网 时间:2024/06/01 18:14

编译环境 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 寻找对应解决方案

0 0
原创粉丝点击