【问题标题】:Mono mkbundle tool unable to create binary with complaint that output file is unavailableMono mkbundle 工具无法创建二进制文件并抱怨输出文件不可用
【发布时间】:2009-02-17 21:02:13
【问题描述】:

根据this thread 关于运行无 .NET 的 C# 应用程序的建议,我使用 mono 编译了我的应用程序。我使用最新的 Visual C# .NET Express Edition 构建了原始应用程序。它在 Windows 上的 .NET 上运行良好。然后我打开 Cygwin 并导航到我再次编译项目的源代码,在 mono 下使用以下命令:

$ mcs <myProjectHere>.cs

这会生成 MyProject.exe,它可以在 Cygwin 中成功运行,并且可以从 Window 命令行成功运行。使用的命令是:

$ mono MyProject.exe
C:\...>mono MyProject.exe

只是为了好玩,简单地说:

C:\...>MyProject.exe

一切都按预期工作。然后我尝试使用 mkbundle 命令将单声道编译的可执行文件构建为静态链接的二进制文件,如下所示:

$ mkbundle -o MyProject MyProject.exe --deps

这是事情开始走下坡路的地方。它开始得很好,然后抱怨输出文件(大概是 MyProject.exe)因为忙而无法打开。这一切的完整输出在这里:

$ mkbundle -o 程序 Program.exe --deps 操作系统是:Windows 来源:1 自动依赖:真 嵌入:c:\Documents and Settings\bsweeney\My Documents\Visual Studio 2008 \Projects\TestConsole\TestConsole\Program.exe 嵌入:C:\PROGRA~1\Mono-2.2\lib\mono\2.0\mscorlib.dll 编译: as -o temp.o temp.s gcc -mno-cygwin -g -o 程序 -Wall temp.c `pkg-config --cflags --libs mono|dos2 Unix`temp.o /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../i686-pc-mingw32/bin/ld:无法操作 en 输出文件 Program.exe: 设备或资源忙 collect2: ld 返回 1 个退出状态 [失败]

我声称我的 unix gcc 工具链已安装并且状况良好,因为我最近能够使用它在 eclipse 中成功编译一些 c++ 应用程序(尽管我认为我应该对任何数量的问题持开放态度...... )。

有人遇到过这样的事情吗?我被难住了……

【问题讨论】:

    标签: c# compiler-construction mono linker mkbundle


    【解决方案1】:

    它似乎在尝试输出到MyProject.exe,这与输入文件相同。

    尝试运行

    $ mkbundle -o ProgramOutput Program.exe --deps
    

    顺便说一下,这只是一个猜测,因为我不知道mkbundle。

    【讨论】:

    • 这确实有效!我认为Program 和Program.exe 将是两个不同的文件,但事实证明cygwin 或mkbundle 将.exe 附加到Program 的末尾。
    • 哇,我的通灵能力越来越强了!顺便说一句,提示是消息“无法打开输出文件 Program.exe”。
    • 是有道理的——我认为它指的是输入程序,实际上 曾 名为 Program.exe。无论如何,我现在看到了我的方式的错误......谢谢!
    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-01-25
    • 2020-08-03
    • 2017-12-24
    相关资源
    最近更新 更多