首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cygwin不识别make命令,尽管它被安装在bin文件夹中

Cygwin不识别make命令,尽管它被安装在bin文件夹中
EN

Stack Overflow用户
提问于 2021-05-06 14:50:50
回答 2查看 355关注 0票数 0

我一直试图在我的W10 PC上运行需要make的软件,这使我不得不安装Cygwin。当查看Cygwin时,我发现我需要从Devel类别中安装make,这是我第一次安装Cygwin时所做的。我第一次尝试执行make时收到以下消息

bash: make:命令找不到

我试着重新安装make (下拉列表字面上写着“重新安装”),并检查make.exe是否在bin文件夹中,但我仍然得到了相同的错误。我第二次重新安装了它,但这次检查了src框,希望这会有所帮助,但它没有。

我想添加的唯一其他信息是,我试图创建的Makefile位于我的C驱动器(C:\Users\myname\Documents\folder\folder_with_Makefile)的Documents文件夹中的一个文件夹中。我查看了Cygwin FAQ,它提到Cygwin根目录与我的驱动器根目录在设计上是不一样的,并且只在“您知道自己在做什么”时才更改它,而我显然不知道。我不确定这是否可能是我的问题的原因,但是我很感谢您的帮助。

echo $PATH输出

代码语言:javascript
运行
复制
/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files (x86)/Calibre2:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files/CMake/bin:/cygdrive/c/Users/myname/AppData/Local/Programs/Python/Python39/Scripts:/cygdrive/c/Users/myname/AppData/Local/Programs/Python/Python39:/cygdrive/c/Users/myname/.cargo/bin:/cygdrive/c/Users/myname/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/JetBrains/PyCharm Community Edition 2020.2.2/bin:/cygdrive/c/Users/myname/AppData/Local/atom/bin:/cygdrive/c/Users/myname/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.3.3/bin

这是安装cygwin的地方:C:\cygwin64

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 06:03:36

请参阅下面的更改,这将有助于您正确设置路径变量与cygwin。您可以执行下列更改。

打开etc/直接安装cygwin的文件profile.bashrc。

添加下面的行。

代码语言:javascript
运行
复制
# Save Windows path variable
export WINPATH=$PATH
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin

打开etc/直接安装cygwin的bash.bashrc文件。添加以下行

代码语言:javascript
运行
复制
# The next block is only needed in case somebody starts a shell without --login parameter in the beginning (no /etc/profile invoked)
# The WINPATH variable is set in /etc/profile and contains the original Win PATH variable content
if [ -z "${WINPATH}" ] ; then
   export WINPATH=$PATH
fi
# Set PATH variables
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:${WINPATH}
export MANPATH=/usr/local/man:/usr/share/man:/usr/man
票数 0
EN

Stack Overflow用户

发布于 2021-05-07 07:58:16

您似乎没有运行登录shell。

使用根目录中的两个批处理文件模拟效果,该文件来自预期存在的Cygwin.bat

案例1: Cygwin-nologin.bat . Case

Mintty不以login shell的形式运行bashPATH也不包括Cygwin命令主要位于的/usr/bin/

代码语言:javascript
运行
复制
@echo off
setlocal enableextensions
set TERM=
cd /d "%~dp0bin" && .\mintty

我运行它,其效果是:

代码语言:javascript
运行
复制
echo $PATH
/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Calibre2:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/Marco/AppData/Local/Microsoft/WindowsApps

$ which make
bash: which: command not found

$ /usr/bin/which make
/usr/bin/which: no make in (/cygdrive/c/Program Files (x86)/Intel/iCLS Client: ...)

案例2: Cygwin-login.bat

Minttylogin shell的形式运行bashPATH包含/usr/bin/

代码语言:javascript
运行
复制
@echo off
setlocal enableextensions
set TERM=
cd /d "%~dp0bin" && .\mintty -

区别在于最后一个-字符。man mintty获取详细信息

代码语言:javascript
运行
复制
$ echo $PATH
/usr/local/bin:/usr/bin

路径非常短,因为在我的环境中,我设置了一个特定的变量

代码语言:javascript
运行
复制
$ set |grep NOWIN
CYGWIN_NOWINPATH=YES

否则,路径将是Cygwin和Windows路径的组合,前面是Cygwin路径

代码语言:javascript
运行
复制
$ echo ${PATH}":"${ORIGINAL_PATH}
/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Calibre2:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/Marco/AppData/Local/Microsoft/WindowsApps

在两种情况下

代码语言:javascript
运行
复制
$ which make
/usr/bin/make

$ make --version
GNU Make 4.3
Built for x86_64-pc-cygwin
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67420569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档