Executable
使用 Mono 和 mkbundle 生成 Linux 執行檔
單聲道的 AC# 文件可以使用
gmcs
命令編譯。這將創建一個hello.exe
文件。$ gmcs hello.cs $ ls hello.cs hello.exe $ ./hello.exe Hello from Mono!
為了生成一個 linux 執行檔,我嘗試了這個命令,但它會產生錯誤:
$ gmcs /t:exe hello.cs /out:hello Unhandled Exception: System.ArgumentException: Module file name 'hello' must have file extension.
我想創建一個獨立的執行檔,這樣我就可以執行它,只需說執行它,我就會得到所需的輸出:
$ ./hello Hello from Mono!
我搜尋並找到了一個解決方案,其中提到了一個名為mkbundle的工具:
$ mkbundle -o hello hello.exe --deps Sources: 1 Auto-dependencies: True embedding: /home/ed/Projects/hello_world/hello.exe embedding: /mono/lib/mono/1.0/mscorlib.dll Compiling: as -o /tmp/tmp54ff73e6.o temp.s cc -o hello -Wall temp.c `pkg-config --cflags --libs mono` /tmp/tmp54ff73e6.o Done $ ls -l total 3 -rwxr-xr-x 1 ed users 1503897 2005-04-29 11:07 hello -rw-r--r-- 1 ed users 136 2005-04-29 11:06 hello.cs -rwxr-xr-x 1 ed users 3072 2005-04-29 11:06 hello.exe
我的 Mono 安裝中似乎不存在此實用程序。我發現這是在
mono-devel
包裝中提供的。安裝這個包意味著安裝大約 82 個其他包。我的目標是將我的單聲道安裝保持在最低限度,直到某個時候。有沒有辦法
mkbundle
獨立安裝?
我很不耐煩,覺得包裡
mono-2.0-devel
可能有mkbundle。所以我繼續安裝mono-2.0-devel
它只需要 18 個額外的包。當我輸入mkb
並點擊選項卡時,它顯示給我mkbundle2
。我試過了:
$ mkbundle2 -o hello hello.exe --deps OS is: Linux Sources: 1 Auto-dependencies: True embedding: /home/minato/Projects/Practice/mono/hello.exe embedding: /usr/lib/mono/2.0/mscorlib.dll Compiling: as -o temp.o temp.s cc -ggdb -o hello -Wall temp.c `pkg-config --cflags --libs mono` temp.o Done $ ls hello hello.cs hello.e hello.exe $ ./hello Hello from Mono!
這是我首先需要的。
感謝
command-not-found
工具。