MONO源码编译笔记-版本:unity-2018.4-mbe
编译了一个星期,终于成功。官方的编译文件有问题,具体在后面写了。
一,编译不成功,看了下面一些网址
https://www.veryarm.com/117013.html
https://hacpai.com/article/1537455295351
http://bbs.ez168.net/t/topic/81
https://www.qiufengblog.com/articles/mono-load-exe.html
二,最终,回到官方的git网址 https://github.com/Unity-Technologies/mono.git,根据官方指导来尝试,尝试如下
操作系统环境:布置在阿里云上的ubuntu 18.0.4 LTS
1, 查看ubuntu系统版本:
2,mkdir 创建目录
cd /rootmkdir monocd monomkdir bin3, 设置变量,将/root/mono/bin目录添加到环境变量中,PATH就是环境变量,中间用冒号隔开
PREFIX=/root/mono PATH=\$PREFIX/bin:\$PATH echo $PATH输出如下:/root/mono/bin:/root/mono/mybin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
4,克隆远程库
5,修改编译文件错误
打开 mono/mini目录下的 makefile文件,找到
libbdwgc_libs = $(monodir)/external/bdwgc/libgc_static.la改为
libbdwgc_libs = $(monodir)/external/bdwgc/libgc.la
,若不改,将在make时报错如下
/usr/bin/ld: ../../external/bdwgc/.libs/libgc-static.a(gc.o): relocation R_X86_64_PC32 against symbol 'GC_arrays' can not be used when making a shared object: recompile with -fPIC
注意:unity-2018.2-mbe是可以编译通过的,其编译出错的版本包括: unity-2018.4-mbe, unity-2019.1-mbe
6,执行autogen
cd mono ./autogen --prefix=\$PREFIX ./autogen --prefix=\$PREFIX
注意是执行了两次./autogen --prefix=\$PREFIX,只执行一次会在后面make时报错
因为执行第一次时,external/bdwgc文件夹是空的,mono/autogen.sh 会从git上拉取需要的文件到 external/bdwgc,执行第二次是为了执行bdwgc下的 autogen.sh
7,安装monolite, 若是安装了Mono,就不需要执行这个了
8,make --很慢,全程50分钟左右
make9,make instal --将生成的东西放到 --prefix指定的目录 /root/mono/bin下,我们关心的libmonobdwgc-2.0.so就在此生成
make install
三,总结了一些经验
经验:
1,代码热更的 Assembly-CSharp.dll最好是从打出的APK中取出。
实际测试中发现,若从编辑器下的library/scriptassembly下拿 Assembly-CSharp.dll,然后放到网上,然后 启动游戏下载此dll(安卓下),会报错进不了游戏。
报错如下:
2,MakeFile编译时,若有报错,最重要的是看它的堆栈。
它的堆栈有些特殊,是以 leaving directory的方式显示的。
看到错误不要慌,根据堆栈提示找到报错在哪个MakeFile文件的哪一行,然后此makeFile,看看为什么
比如这个在编译 unity-2018.4-mbe的MONO源码时,make命令执行了一段时间后报错如下:
从这里可以看出,错误最初发生在 /root/mono/mono/mini文件夹下的MakeFile文件的1581行。
打开一看,原来是把动态库文件错写成了静态库文件,难怪说不能链接静态库。这是unity开发人员的BUG
目前的问题是:
1,编译出的so文件过大,后面有时间再查找原因
2,运行时是 否能正确执行,没检验
3,最好能从build_runtime_android.sh直接编译
总结
以上是生活随笔为你收集整理的MONO源码编译笔记-版本:unity-2018.4-mbe的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 《Gpu Gems》《Gpu Pro》《
- 下一篇: 最近使用的两个工具 winscp和xsh