Это полуинформированный ответ, так как у меня возникли аналогичные трудности, и в конце концов он продолжал вращаться, пока проблема не исчезла.
rebaseall
без аргументов перебазирует все файлы dll
, которые былиустанавливается из пакетов cygwin.Однако у вас часто будет много других dll из других программ, которые вы создали и установили, в том числе из установленных модулей Perl с кодом XS, и вам нужно как-то рассказать rebaseall
об этих модулях.
Может бытьболее простой способ сделать это, и я надеюсь, что я не забыл ни одного шага, но я думаю, что у меня был некоторый успех, делая что-то вроде этого:
- Получить список всех DLL в вашей системе, которые работаютпод Cygwin.Возможно, что-то вроде
find /bin /lib /usr /home -name \*.dll > /tmp/file1
- выйдет из всех процессов cygwin, откроется как
ash
или dash
shell из командной строки Windows и запустит /bin/rebaseall -v > /tmp/file2
.Переключатель -v
устанавливает флаг Verbose в rebase
, который перечисляет все файлы, которые были перебазированы с настройкой по умолчанию. - Используйте
/tmp/file1
и /tmp/file2
для создания нового файла, скажем /tmp/file3
с полным списком файлов, которые вы хотите перебазировать.Из того, что я помню, важно, чтобы системные dll (все файлы в /tmp/file2
) были перечислены первыми, - Теперь запустите
rebaseall -v -T /tmp/file3
(в золе, после закрытия всех процедур cygwin и т. Д.).Обратите внимание на вывод.Если есть сообщения об ошибках при перебазировании некоторой конкретной библиотеки DLL, удалите эту запись из /tmp/file3
и повторите попытку.
Это может не решить вашу проблему, но, возможно, она поможет вам в этом.Если вы все-таки поймете это, я надеюсь, что вы вернетесь и заполните некоторые дыры в этом решении.