为啥 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++?