【问题标题】:gcc compilation with dark moon cygwin暗月 cygwin 的 gcc 编译
【发布时间】:2020-09-05 16:18:11
【问题描述】:

我正在学习在 Windows 上使用 bash,我安装了暗月 cygwin,我想在 Windows 上用 gcc 编译“旧代码”。我可以编译我的代码并在暗月中运行它,但是当我将它放在另一台计算机上时,它无法运行我的可执行文件,请问我错过了什么?我搜索并想知道这不会来自试图在暗月中运行我的可执行文件,这是否意味着我的代码只能在 cygwin 环境中运行?

【问题讨论】:

    标签: c++ linux windows gcc cygwin


    【解决方案1】:

    Cygwin 在 Windows 上提供 POSIX API 环境,因此可以轻松移植使用该 API 编写的软件(如 Linux 或 BSD 软件)。

    该环境由Cygwin.dll 提供。您的软件正在链接到该 DLL,这会将 POSIX 函数调用(如打开、读取或写入)转换为适当的 Windows 函数调用。

    在未安装 Cygwin 的系统上,该 DLL 不存在,因此该软件无法运行。

    所以要么你的软件需要安装 Cygwin,要么你 use the MinGW tool suite,一个不同的编译器集,它不针对 Cygwin.dll 并创建“真正的”Windows 可执行文件。当然,那么您就无法访问软件中的 POSIX API...

    【讨论】:

    • 所以我可以选择安装 cygwin 或安装 Mingw 工具套件。我在这个网站上看到:dark-moon-x.github.io/DarkMoon 暗月 gnu cygwin 是便携式的,因此无需安装即可在任何计算机上启动。这是否意味着我只需要运行 darkmoon,我的可执行应用程序就会启动,您认为最好的解决方案是什么?
    • @TED:基本上,您尝试编译的代码会为您做出决定。 MinGW 是 WinAPI,Cygwin 是 POSIX。
    • 如果您计划分发 Cygwin DLL,请确保遵守许可条款:cygwin.com/licensing.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多