标签: mingw32

在Windows 7 x64上,Git Bash非常慢

在一个小项目的开发过程中,我一直在Windows和Ubuntu上使用Git,经常在两者之间来回翻转.问题是Git Bash一直变慢.

当我说慢时,我的意思是跑步cd需要8到25秒,运行git命令需要5-20秒,ls有时可能需要30秒.毋庸置疑,这并不好玩,更不用说非生产性了.我知道Git在Windows上比较慢,但这太荒谬了.

对我来说暂时工作的一个解决方案是禁用我的网络连接(如本答案所示),启动Git Bash,然后重新连接.有时它会在这样做之后继续快速运行数天,但性能总是最终会降低.我已经在msysgit讨论组,Stack Overflow,msysgit问题列表等中打开和关闭了几个星期,但我还没有找到有效的解决方案.

到目前为止,我已经尝试过:

  • 将Git和项目文件夹添加到病毒扫描程序的排除列表中
  • 完全禁用我的病毒扫描程序(Kaspersky IS 2011)
  • 确保Outlook未运行(Outlook 2007)
  • 关闭所有其他应用程序
  • 以管理员身份运行Git Bash
  • 禁用网络连接,启动Git Bash并禁用连接
  • 禁用网络连接,启动Git Bash,重新启用连接(仅偶尔工作)
  • 运行 git gc
  • 以及上述的组合

我确实读到有几个人成功禁用Bash完成,但理想情况下我想保持活跃.msysgit的版本是1.7.3.1-preview20101002,操作系统是Windows 7 x64.可以预见,在Linux上运行相同的东西是快速的.我会专门使用Linux,但我也需要在Windows中运行东西(某些应用程序,测试等).

有没有人遇到类似的问题?如果是这样,那么潜在的问题是什么?解决方案是什么(如果有的话)?

这超出了Git存储库,但仅供参考,我一直使用Git的存储库非常小:最多4-50个文件.

git bash msysgit mingw32 windows-7

418
推荐指数
14
解决办法
16万
查看次数

在Windows安装的Git Bash中更改〜目录的位置

我甚至不确定我是在问正确的问题.让我解释一下我的情况:

这是关于Windows 7上的Git.

我的公司在网络驱动器上设置Windows用户目录,而不是在本地硬盘驱动器上(用于备份和超出此问题范围的其他目的).我不能改变这个政策.

我可以在该方案之外拥有本地文件,这就是我的Apache服务器的设置方式.完全是当地的.

我安装了Git.它安装了Bash.当我启动Bash和cd ~(更改到根目录)时,我发现它(Bash根目录)指向我的网络用户目录.我希望它不要那样做.我想要 ~在我的硬盘上的其他地方.我想要它,以便当我执行其他操作,如安装证书,SSH密钥等时,其默认值不会自动使用该网络目录.

我到处搜索都是徒劳的,我能找到的所有内容都指的是涉及别名,重定向和$ HOME指向的位置的答案.但这根本不是我想要的.

问题是:我可以更改该目录吗?如果是这样的话:怎么样?

更新:所以,$ HOME是我需要修改的.但是我一直无法找到这个神秘的$ HOME变量的位置,所以我认为它是一个Linux系统版本的PATH或其他东西.无论如何 ......

我的确有一个"个人资料"文件git/etc.以下是内容(注意没有$ HOME):

  # To the extent possible under law, the author(s) have dedicated all
  # copyright and related and neighboring rights to this software to the
  # public domain worldwide. This software is distributed without any warranty.
  # You should have received a copy of the CC0 Public Domain Dedication along
  # with this software.
  # If not, see …
Run Code Online (Sandbox Code Playgroud)

git msysgit mingw32 git-bash msys2

119
推荐指数
6
解决办法
10万
查看次数

ld.exe:无法打开输出文件...:权限被拒绝

我最近在Windows 7旗舰版32bit上安装了mingw32的CodeBlocks以消除我的技能,但是这个问题让我有点难过.

我决定发射一个短的Fibonacci发生器,以确保我的设置正常,但我遇到了障碍.

该程序编译,链接和诸如魅力之类的东西,我得到一个相应的可执行文件,按预期运行.

如果我再次尝试编译会出现问题,然后我得到以下内容:

c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied
Run Code Online (Sandbox Code Playgroud)

我甚至无法编辑生成的可执行文件的权限.

我检查了通常的嫌疑人:

  • 可执行文件确实没有运行.
  • 可执行文件的路径是可读/写到mingw32(否则它将无法在第一个位置构建)
  • 我没有运行任何形状或形式的cygwin.

现在有趣的是:通常在几分钟之后,mingw32生成的任何可执行文件都会自动消失而没有任何干预.

我在谷歌上搜索了一下,但大多数其他结果要么含糊不清,要么不适用.

我想知道是否有一些Windows 7安全设置对我的.exe有严重破坏,但我不知道Win 7知道从哪里开始搜索.

有人有主意吗?

c windows codeblocks mingw32 windows-7

45
推荐指数
5
解决办法
17万
查看次数

msys路径转换(或msys的cygpath?)

我需要将/DEF:c:\filepath\myLib.def"命令行选项从bash脚本传递给MS编译器/链接器.该路径是作为构建过程的一部分由bash脚本生成的.基本上,我的脚本的参数通行证是:

-DEF:/c/filepath/myLib.def
Run Code Online (Sandbox Code Playgroud)

MSYS路径转换无法正确处理它,因为它不了解/DEF:部分.如果我这样做的话

-DEF=/c/filepath/myLib.def
Run Code Online (Sandbox Code Playgroud)

但是ms工具不理解这个参数.简而言之,在MSYS bash中编写该参数的正确方法是什么,以便将其转换为正确的参数?

在cygwin上我可以使用cygpath,但没有相应的,因为msys的某些人认为它不需要(即使cygwin的脚本使用cygpath).

portability path msys mingw32 cygpath

32
推荐指数
4
解决办法
2万
查看次数

MinGW-w32 vs. MinGW

MinGW项目与MinGW-W64项目的32位部分有什么区别?MinGW-W64的32位部分是否与x64有任何关系?

好像他们的编译器做了完全相同的事情......

mingw mingw32 mingw-w64

29
推荐指数
4
解决办法
2万
查看次数

在windows上的git bash中设置ls的颜色

我最近安装了GitHub for Windows并且正在使用git bash提示符 - 现在困扰我的一件事是当我输入LS时所有目录都以蓝色列出.

如何更改我的git bash shell,以便在输入LS时,目录以不同的颜色列为蓝色?

mingw32 github-for-windows

28
推荐指数
2
解决办法
3万
查看次数

如何使用QTCreator中的mingw在多个核心上进行编译

我的Windows桌面上有一个四核i7 CPU.我试图让mingw32-make使用尽可能多的内核进行编译.我已将-j8添加到Build Settings-> Build Steps下的"Make Arguments"字段中.mingw32-make似乎完全忽略了该选项,因为我没有从中获得任何速度提升.当我查看任务管理器中的CPU使用率时,它保持在13%,我只看到一个运行g ++的实例.

现在,使用mingw重建整个项目需要3分钟.使用MSVC重建它只需要15秒.

为了您的信息,我在项目设置中启用了预编译的标题选项.这也使VC的事情变得更快.但我仍然没有看到预编译头与mingw的好处.

如果你有从MTCreator并行编译多个源文件的话,请分享你的意见.谢谢!

qt qt-creator mingw32

22
推荐指数
2
解决办法
2万
查看次数

发现自动错误'./ltmain.sh'

我已经安装了mingw和msys mingw-get-setup.exe.我还安装了Autotools(autoconf,automake,m4,libtool)C:\/opt/autotools.

当我运行automake时,总会发生以下错误:

configure.ac:11: error: required file './ltmain.sh' not found
Run Code Online (Sandbox Code Playgroud)

如果我ltmain.sh从libtool的已安装树中复制,执行将正常完成.

如何在ltmain.sh不复制的情况下将automake配置为查找?

c automake autotools libtool mingw32

22
推荐指数
1
解决办法
2万
查看次数

没有"-std = c99"的大规模fprintf速度差异

我写过一本表现不佳的翻译,几周来一直在苦苦挣扎.在下面简单的bechmark

#include<stdio.h>

int main()
{
    int x;
    char buf[2048];
    FILE *test = fopen("test.out", "wb");
    setvbuf(test, buf, _IOFBF, sizeof buf);
    for(x=0;x<1024*1024; x++)
        fprintf(test, "%04d", x);
    fclose(test);
    return 0
}
Run Code Online (Sandbox Code Playgroud)

我们看到以下结果

bash-3.1$ gcc -O2 -static test.c -o test
bash-3.1$ time ./test

real    0m0.334s
user    0m0.015s
sys     0m0.016s
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在添加"-std = c99"标志的那一刻,性能崩溃了:

bash-3.1$ gcc -O2 -static -std=c99 test.c -o test
bash-3.1$ time ./test

real    0m2.477s
user    0m0.015s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

我正在使用的编译器是gcc 4.6.2 mingw32.

生成的文件大约是12M,所以这两者之间的差异大约为21MB/s.

运行diff显示生成的文件是相同的.

我认为这与文件锁定有关fprintf,程序大量使用,但我无法找到在C99版本中关闭它的方法.

我尝试flockfile了在程序开始时使用的流,并funlockfile在最后使用了相应的流,但是遇到了关于隐式声明的编译器错误,以及声称对这些函数的未定义引用的链接器错误. …

c performance locking stdio mingw32

19
推荐指数
2
解决办法
1116
查看次数

mingw32中的double to int隐式转换

我无法解释以下程序的行为(在mingw 32位上使用gcc编译).我知道隐式从double转换为int时可能出现的精度损失,但我希望这两种情况能够提供相同的输出,因为它执行完全相同的操作.为什么两个输出不同?

#include <stdio.h>
#include <math.h>

int main()
{
    int table[3] = {2, 3, 4};
    int i, N;

    N = 0;
    N += table[0] * pow(100, 0);
    N += table[1] * pow(100, 1);
    N += table[2] * pow(100, 2);
    printf("%d\n", N);

    N = 0;
    for(i = 0; i < 3; i++)
        N += table[i] * pow(100, i);
    printf("%d\n", N);

    return 0;
}

//output: 
40302
40300
Run Code Online (Sandbox Code Playgroud)

c mingw32

19
推荐指数
1
解决办法
417
查看次数