Windows 整合Unix工具链开发环境:cygwin、MSYS2、git-bash、Qt

Windows 整合Unix工具链开发环境:cygwin、MSYS2、git-bash、Qt,windows,git,cygwin,msys2,gnu-toolchain,Windows,Git,Cygwin,Msys2,Gnu Toolchain,我已经使用cygwin和emacs很长时间了,集成问题一直存在。cygwin下的XEMAC工作得很好,但需要运行xwindows,这令人不快。然后我将git bash添加到混合中 现在,如果算一下,我在windows下有4个独立的unix实现: cygwin Qt (which runs mingw somewhere in there) git bash MSYS64 在windows上运行本机emacs 我想知道我是否可以合并和删除其中一些工具。cygwin和MSYS2拥有git似乎很可笑

我已经使用cygwin和emacs很长时间了,集成问题一直存在。cygwin下的XEMAC工作得很好,但需要运行xwindows,这令人不快。然后我将git bash添加到混合中

现在,如果算一下,我在windows下有4个独立的unix实现:

cygwin
Qt (which runs mingw somewhere in there)
git bash
MSYS64
在windows上运行本机emacs

我想知道我是否可以合并和删除其中一些工具。cygwin和MSYS2拥有git似乎很可笑。那为什么要有一个单独的git bash呢?据我所知,git无论如何都在MSYS2中运行

但我非常怀疑。在过去,cygwin和mingw不一样。我发现了两个大bug——一个是运行库,它在mingw上使用了本机库。因此,即使编译器是相同的,使用长双精度编译程序也会产生一个无法工作的程序

我现在试过了,它在MSYS2中运行。这可能是因为他们正在使用所有gnu库,或者是因为微软已经更新了

线程在mingw中也不起作用,但在cygwin中起作用。我刚刚在MyS2-64:

中用以下C++代码进行了测试
#include <thread>
#include <iostream>
#include <unistd.h>
using namespace std;

void f() {
    for (;;) {
        cout << "yo!\n";
        //      sleep(1);
    }
}

void g() {
    for (;;) {
        cout << "ho!\n";
        //      sleep(2);
    }
}

int main() {
    thread t1(f);
    thread t2(g);
    t1.join();
    t2.join();
    cout << "Done!\n";
    return 0;
}
贝壳挂着。那不好! 我杀了壳又跑了。不知怎的,那里有一个目录/home/myuser(但不是我的符号链接)。我不知道它是如何产生的。但是我在里面创建了一个符号链接.ssh,现在它可以工作了。 但这让我很紧张,因为我不明白发生了什么

MSYS64比cygwin有巨大的优势。有一个软件包管理器,它安装得更快,比cygwin小得多。编译器更新了

emacs和MSYS64仍然存在一些问题,我将在另一个问题中提出,但由于它似乎工作得很好,问题是,我能负担得起摆脱其他问题吗?我正在调查这个问题,看看我是否可以让学生为C++和数据结构类安装这个,所以我绝对希望线程和编译工作。到目前为止,我无法解决的错误包括:

是否有线程解决方法

  • 在/home/user上发生了什么?我成功了,但那可以 以后再咬,它必须被理解

  • 还有其他兼容性问题吗

  • 线程问题似乎仍然存在


  • 总之,有没有办法在MSYS2中使用git,我能安全地摆脱git和cygwin吗?还是有理由让cygwin留在身边?我必须单独保存git bash吗

    我建议彻底重写这个问题。实际上,你只想知道如何在MSYS2中克服git的一个特定技术难题,但你会浪费大量时间问一些广泛的、基于观点的问题,这很可能会让你的问题结束。在二读时,听起来你想知道git在MSYS2中是否工作良好。是的,我每天都依赖它。不过,MSYS2中的Git不会像Git bash那样快。我相信,如果你在MSYS2 IRC频道上问几个问题,你一定能弄清楚到底发生了什么,从而缓解你的压力。由于mingw使用windows中的本机库,因此出现了一些重大而奇怪的问题。long double可以编译,但没有运行。线程不起作用。在删除cygwin之前,我想知道是否还有其他问题,cygwin从根本上改善了unix的兼容性,或者msys2是一种改进。我有充分的理由怀疑。
    mkdir /home/
    ln -s /c/Users/myuser /home/myuser