2010-07-14 67 views
2

我認爲mkbundle2的目的是允許沒有安裝mono的機器運行單聲道應用程序。但它似乎並沒有打包libmono.so。我不確定是否應該這樣做,但是目標機器抱怨說當我運行該軟件包時它找不到libmono.so.0。它爲什麼要查找該文件?如果需要的話,爲什麼它只能在捆綁中找到任何地方?如果它應該在捆綁中,爲什麼沒有mkbundle2呢?我正在使用「--deps」選項來包含所有依賴關係。我錯過了什麼嗎?用mkbundle2打包後,目標機器抱怨libmono.so。爲什麼?

添加--static選項後,我得到的目標計算機上這樣的結果:

未處理的異常:System.TypeInitializationException:一個例外是由類型初始化爲System.Windows.Forms.XplatUI拋出 - System.Windows.Forms.XplatUI..cctor()[0x00000] in:0

(System.Windows.Forms.XplatUI:uname(intptr) )

使用export MONO_LOG_LEVEL = debug顯示更多信息:

Mono-INFO:DllImport試圖加載:'libc'。 Mono-INFO:DllImport加載位置:'libc.so'。 Mono-INFO:DllImport錯誤加載庫:'/usr/lib64/libc.so:invalid ELF header'。 Mono-INFO:DllImport加載庫:'./libc.so'。 Mono-INFO:DllImport錯誤加載庫'./libc.so:無法打開共享對象文件:沒有這樣的文件或目錄'。 Mono-INFO:DllImport加載:'libc'。 Mono-INFO:DllImport錯誤加載庫'libc:無法打開共享對象文件:沒有這樣的文件或目錄'。

這是否意味着我試圖在硬件不兼容的機器上運行?這兩臺計算機都是SUSE Linux Enterprise Server 11(x86_64)。

回答

1

here我們有:

--deps:此選項將捆綁的所有引用的程序集的有關命令行選項中列出的 組件。這對分發自包含圖像很有用。

您確定不忘記在命令行中引用程序集嗎?

從這個線程:

Mono Community › General › Mono Community › mkbundle, static, lgmodule

看來,mkbundle不負責包裝本次大會。用戶通過安裝缺少的與glib相關的軟件包來解決問題。

在靜態參數here請看:

--static:默認情況下mkbundle動態鏈接到單聲道和油嘴滑舌。此選項 會導致它靜態鏈接。

+0

Leniel的+1。該文檔明確指出:要自動包含所有引用的依賴項,請使用「--deps」命令行選項。 – karlphillip 2010-07-25 05:26:17

+0

這是我失蹤的 - 靜態選項。謝謝。 – Fantius 2010-07-26 16:19:28

+0

嗯,看來還是有問題。我編輯了我的問題。 – Fantius 2010-07-26 16:53:58

相關問題