Почему MinGW/MSys меняет бинарный путь?

Я использую Mingw для создания проекта C/C++. Этот проект имеет make-файлы за пределами моего понимания, и для его компиляции используется специальный и довольно сложный набор инструментов. Довольно удобно иметь инструменты GNU, доступные в Windows, особенно из командной оболочки Windows, но при вызове инструментов (в частности, make) MinGW, похоже, меняет мой PATH.

Cmd делает это нормально:

echo %PATH% > ... c:\Apps\msys\bin ... (from cmd)

но msys меняет этот адрес на:

echo $PATH > ... /usr/bin ...

в msys, даже когда я печатаю PATH из make-файла. В результате make жалуется, что не может найти такие команды, как make, uname, echo, вы называете это (без каламбура).

Как ни странно, мне удалось заставить эту среду работать много лет назад без сучка и задоринки, но я впервые вижу эту проблему пути. Как я могу заставить MinGW/msys правильно указывать на свои исполняемые файлы?


person Community    schedule 24.06.2012    source источник
comment
Вы изменили файл конфигурации. Похоже, вы где-то установили PATH. посмотрите в .bashrc .profile /etc/profile /etc/bash.bashrc Я всегда использовал оболочку bash в xterm (не cmd), я никогда не говорю о каких-либо необъяснимых проблемах, подобных этой. Попробуйте /usr/bin/find / -mount -print0 | /bin/xargs -0 /bin/grep PATH | /usr/bin/less   -  person ctrl-alt-delor    schedule 25.06.2012
comment
Я не трогал файлы конфигурации. При ближайшем рассмотрении кажется, что make жалуется, потому что make-файлы изменяют путь, и кажется, что пути в стиле Windows и пути в стиле Linux конфликтуют. Опять же, у меня это работало из коробки не так давно. Мне кажется, за это время было сделано несколько несовместимых обновлений.   -  person    schedule 25.06.2012
comment
Проблема может быть в cmd. Если make использует sh или bash в качестве оболочки, то установленная переменная среды не является постоянной. Make использует новую оболочку для каждой команды, и набор влияет только на оболочку и вложенные оболочки, но не на родительские оболочки. Но я думаю, что cmd думает иначе, я думаю, что он устанавливает его глобально. Скажите make использовать sh в качестве оболочки.   -  person ctrl-alt-delor    schedule 25.06.2012


Ответы (1)


У Ричарда есть точка зрения - две разные оболочки боролись за переменные среды (не говоря уже о запуске msys), и поэтому каждая из них по-разному анализировала свои собственные и системные переменные среды.

Также убедитесь, что переменные, определенные в вашей пользовательской или системной среде, правильно написаны - Windows любит пути в стиле "C:\foo\bar", но Msys обрабатывает их как "/c/foo/bar".

person Community    schedule 31.07.2012