运行Cygwin命令时"无法使stderr与stdout不同"

jac*_*cus 14 cygwin stdout stderr windows-7

我试图在我的Windows 7 x64操作系统上设置一些旧版本的Cygwin.到现在为止还挺好.现在我陷入了srdout/stderr区分问题:

$ vmake
  1 [main] make 7060 dtable::stdio_init: couldn't make stderr distinct from stdout

$ ls /
  1 [main] ls 8180 dtable::stdio_init: couldn't make stderr distinct from stdout
Cygwin.bat  Cygwin.ico  bin  cygdrive  etc  lib  proc  setup.log  setup.log.full  tmp  usr  var
Run Code Online (Sandbox Code Playgroud)

我在跑步:

$ uname -srv
  1 [main] uname 5876 dtable::stdio_init: couldn't make stderr distinct from stdout
CYGWIN_NT-6.1-WOW64 1.5.25(0.156/4/2) 2008-06-12 19:34
Run Code Online (Sandbox Code Playgroud)

Cygwin安装选择了DOS行结束选项(对于某些遗留代码兼容性).

修复行结尾的另一个问题(bash有麻烦处理/ cygdrive/c/cygwin-legacy/bin/vmake脚本,如此处描述的问题:http://chess.eecs.berkeley.edu/softdevel/faq/5.html )我已将这些添加到〜/ .bash_profile:

export SHELLOPTS
set -o igncr
Run Code Online (Sandbox Code Playgroud)

在阅读http://lists-archives.com/cygwin/50369-run-requires-cygwin-tty.html之后,我还设置了:

$ CYGWIN=tty
Run Code Online (Sandbox Code Playgroud)

这没有改变.我还在

1 [main] make 7060 dtable::stdio_init: couldn't make stderr distinct from stdout
Run Code Online (Sandbox Code Playgroud)

每次都有不同的4位数字.

小智 11

我在这里遇到了同样的问题.然后我记得,我们更换了由MSYS版"make"命令(因为新的Cygwin包的"使"没有用冒号(处理任何pathes":") - >这导致"多目标"的错误.

替换'make'命令解决了这个问题,但是在我尝试编译其他项目时导致"stdio_init:无法使stderr与stdout不同".

因此:

你的机器上也安装了MSYS/MinGW吗?

试试这个:

make --version

它应该看起来像:

GNU Make 3.82.90
Built for i686-pc-cygwin
Run Code Online (Sandbox Code Playgroud)

如果你得到类似的东西:

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i686-pc-msys
Run Code Online (Sandbox Code Playgroud)

你需要使用cygwin'make'代替.

如果混淆不同cygwin版本的组件,可能会发生此错误...

  • 你如何`使用cygwin'make'代替.? (2认同)

Nun*_*ado 6

对于像ssh这样的其他二进制文件有这个问题的人的一点注意事项.我有这个错误,因为cygwin试图运行Windows ssh客户端而不是cygwin中的版本

  • 感谢名单!我确实遇到的问题:) (2认同)