"не может сделать stderr отличным от stdout" при запуске команд Cygwin

Я пытаюсь установить некоторую старую версию Cygwin на моей ОС Windows 7 x64. Все идет нормально. Теперь я застрял в проблеме разграничения 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

Я запускаю:

$ 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

У установки Cygwin была выбрана опция окончания строки DOS (для некоторой совместимости с устаревшим кодом).

Чтобы устранить другие проблемы с окончанием строки (bash обработаны проблемы /cygdrive/c/cygwin -legacy/bin/vmake script, как проблема, описанная здесь: http://chess.eecs.berkeley.edu/softdevel/faq/5.html) Я добавил их в файл ~/.bash_profile:

export SHELLOPTS
set -o igncr

После чтения http://lists-archives.com/cygwin/50369-run-requires-cygwin-tty.html я также установил:

$ CYGWIN=tty

Это ничего не изменило. Я все еще получаю

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

с различным 4-значным номером каждый раз.

Ответ 1

У меня была такая же проблема. Затем я вспомнил, что мы заменили команду "make" по MSYS-версии (поскольку "make" нового В пакете cygwin не обрабатывались никакие дорожки с двоеточиями ( ":" ) - > это приводит к ошибкам "множественной цели".

Замена команды "make" решила эту проблему, но вызвал "stdio_init: не мог сделать stderr отличным от stdout" когда я пытался скомпилировать другие проекты.

Таким образом:

У вас также установлен MSYS/MinGW на вашем компьютере?

Попробуйте следующее:

make --version

он должен выглядеть так:

GNU Make 3.82.90
Built for i686-pc-cygwin

если вы получите что-то вроде:

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

Вместо этого вам нужно использовать cygwin 'make'.

Возможно, эта ошибка возникает, если вы смешиваете компоненты разных версий cygwin...

Ответ 2

Небольшая заметка для людей, имеющих эту проблему с другими двоичными файлами, такими как ssh. У меня была эта ошибка, так как cygwin пытался запустить Windows ssh-клиент вместо версии в cygwin

Ответ 3

Убедитесь, что исполняемый файл представляет собой версию cygwin

Я получил эту ошибку при попытке запустить Msys исполняемый файл из cygwin. Msys - это еще одна среда "linux on windows" и несовместима с cygwin.

В частности, я пытался запустить Git для Windows через символическую ссылку в пути my/bin. По-видимому, я установил его много лет назад и создал символическую ссылку, и не заметил никаких проблем, пока не попытаюсь использовать git gui, который затем выбросил ошибку couldn't make stderr distinct from stdout. Интересно, что многие из команд git работают, или терпят неудачу, так что это было неразумно.

Когда cygwin пытается запустить программу, предназначенную для среды Msys, она выдает ошибку.

Чтобы исправить его, загрузите версию проблемы cygwin и удалите любые символические ссылки, которые вы указываете на версию Windows.

Для случая git:

  • Я удалил /bin/ git symlink
  • перезапустили настройку cygwin и установили git (версия cygwin)

Ответ 4

Это помогло мне:

Попробуйте использовать бета-версию Cygwin 1.7 вместо этого:

http://cygwin.com/#beta-test

Cygwin 1.5.25 на самом деле не поддерживается в Windows 7. Только Cygwin 1.7 тестируется на нем.

Ответ 5

Удаление C:\DevKit\bin из моего пути затруднило проблему.