2018年12月16日 星期日

Unity + native plugins on Linux

Unity engine中使用 managed/native plugins配合開發,
這是很便利和重要的開發工具,
不同的 OS環境下需要準備對應的 plugin library動態連結檔案,
Windows : .dll
Linux : .so
Mac OSX : bundle

以下就自己的經驗, 使用第三方 SimpleITK library,
(SimpleITK是我用到的 image processing toolkit library, 就先跳過介紹了)
如何準備 Linux OS環境下所需的 native plugins步驟.

1. 準備 source code
SimpleITK已經準備好 cmake可編譯的 source code makefiles.
較詳細的官方教學
https://itk.org/Wiki/SimpleITK/GettingStarted/Visual_guide_to_building_on_Linux

2. 準備 cmake
在 ubuntu 18.04 中 software center已經有 cmake (含cmake-gui)等我去一鍵安裝了, 真方便...

3. cmake building...
照著教學的步驟做(此步不詳述)
但因為我們需要透過 Unity engine開發, 所以設置參數中選取 CSharp wrapping enabled.
建置完成後取得 SimpleITKCSharpManaged.dll 與 libSimpleITKCSharpNative.so

4. 整合進 Unity
將 XXXXmanaged.all 與 XXXXnative.so 檔案放進 Unity project中的 Plugins專屬目錄下,
並注意好設置給 Linux環境專用,


差不多大功告成~


.
.
.

事情還沒完, 因為我使用 ubuntu 18.04 OS環境編譯出 library binaries,
因此在較舊的 ubuntu 14.04 OS 環境測試 standalone player app時便遇到問題,
舊 ubuntu 14 OS中無法完全相容 ubuntu 18編譯出來的 libs,
在 app啟動無法成功載入 libSimpleITKNative.so, 得到以下 log:
./libSimpleITKCSharpNative.so: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by ./libSimpleITKCSharpNative.so....

google後決定安裝 ubuntu 14.04 64bit OS, 並安裝 cmake-gui, 來編譯 library binaries,
ubuntu 14 OS環境下安裝 cmake-gui稍微麻煩一點,
https://askubuntu.com/questions/1020168/how-to-build-cmake-gui-on-linux-from-source
善用 Google, 佛心教學真的頗多.

最後從 ubuntu 14編譯出來的 library binaries取代之後,
便可成功載入 libSimpleITKNative.so 檔案, 並且測試 app成功~

沒有留言:

張貼留言