为啥 cygwin 使用 Visual Studio BuildTools 而不是 gcc?

Posted

技术标签:

【中文标题】为啥 cygwin 使用 Visual Studio BuildTools 而不是 gcc?【英文标题】:Why does cygwin use Visaul Studio BuildTools instead of gcc?为什么 cygwin 使用 Visual Studio BuildTools 而不是 gcc? 【发布时间】:2020-08-04 19:42:45 【问题描述】:

首先我对 cygwin 很陌生,我没有找到类似的问题 有人指出,要安装包含 c++ 代码的 Python lib hdt,必须使用 Cygwin,因为某些头文件仅存在于 Posix 中。 之前尝试安装 lib,我安装了 MS BuildTools。当我尝试在 Windows 上安装没有 Cygwin 的库时出现错误

    BitSequence.cpp
    hdt-cpp-1.3.3/libcds/include/libcdsBasics.h(27): fatal error C1083: ЌҐ г¤ Ґв
бп ®вЄалвм д ©« ўЄ«о祭ЁҐ: sys/resource.h: No such file or directory,
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Buil
dTools\\VC\\Tools\\MSVC\\14.26.28801\\bin\\HostX86\\x64\\cl.exe' failed with exi
t status 2  

错误来自 C:\Program Files (x86)\Microsoft Visual Studio 而且我发现在 Windows 上无法避免错误,在 Linux 或使用 Cygwin 时不会出现错误。 现在我尝试在 Cygwin 中安装 Python lib。我在 Cygwin 终端 (pip install hdt) 中执行相同操作,并从 Visual Studio 中得到相同的错误。 为什么 Cygwin 不使用 gcc?我认为这是 Cygwin 使用的一个重点。当然如果它使用 VS 也会出现同样的错误。

【问题讨论】:

【参考方案1】:

我打赌你没有使用 cygwin Python 而是使用 windows 版本:

$ which pip
which: no pip in (/home/Marco/bin:/usr/local/bin:/usr/bin:/usr/lib/lapack:/usr/sbin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/d/utility)

$ which pip2
/usr/bin/pip2

$ which pip3
/usr/bin/pip3

验证您是否安装了 Cygwin Python,

$ cygcheck -cd |grep "python3. "
python3                                 3.8.3-1
python36                                3.6.10-1
python37                                3.7.7-1
python38                                3.8.3-1

$ cygcheck -cd |grep "python2. "
python2                                 2.7.18-1
python27                                2.7.18-1

然后用 EG 再试一次

Usage:
  /usr/bin/python3.6 -m pip <command> [options]


  /usr/bin/python3.6 -m pip install hdt

【讨论】:

以上是关于为啥 cygwin 使用 Visual Studio BuildTools 而不是 gcc?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中使用 cygwin 编译的 dll 的库函数时出错

程序 .exe 在 cygwin 上运行,但在调试和在 Visual Studio 上运行时出现异常

如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?

为啥我看不到在 Cygwin 之上使用 Python 的 winlogon.exe?

visual studio 2010问题修复

为啥某些 Cygwin 文件不可执行?