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