Col*_*vel 15 windows bash putty makefile pscp
我在Windows中使用makefile来推送Unix服务器上的一些文件(这里是我的makefile的同一个文件夹中的文本文件"blob.txt").我的makefile脚本是:
setup:
pscp blob.txt username@hostname:/folder/
Run Code Online (Sandbox Code Playgroud)
我启动命令提示符,进入blob.txt和makefile所在的文件夹并输入:
make setup
Run Code Online (Sandbox Code Playgroud)
结果如下:
pscp blob.txt username@hostname:/folder/
process_begin: CreateProcess(NULL, pscp blob.txt username@hostname:/folder/, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [setup] Error 2
Run Code Online (Sandbox Code Playgroud)
在#fail中...而如果我在命令提示符中直接输入命令:
pscp blob.txt username@hostname:/folder/
Run Code Online (Sandbox Code Playgroud)
它有效......我真的很想知道为什么.
Eta*_*ner 13
错误
process_begin: CreateProcess(NULL, pscp blob.txt username@hostname:/folder/, ...) failed.
make (e=2): The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
几乎肯定抱怨Windows无法找到pscp.
这几乎可以肯定是因为当make生成shell /控制台然后手动打开它时,%PATH%(或者其他)的值是不同的.
比较值以确认.然后使用pscpmakefile配方中的完整路径或确保PATH正确设置值以供make使用.
小智 9
我不想从 PATH 变量中删除 GIT 的 bin 文件夹(我使用的是 Windows 机器),因为我经常使用它。所以我寻找了一种解决方法,这里是:
将该<git-installation-directory>/usr/bin目录也添加到您的 PATH 变量中。这基本上将“GIT bash”附带的其余类似 linux 的命令添加到您的环境中。应用此功能后,我的 makefile 再次正常运行。:)
如果您对 make 调用的 shell 感到好奇,只需$(info $(SHELL))在 makefile 的开头添加即可。运行 make 后,正在调用的 shell 的路径/名称会立即打印到控制台。
@ user3869623的解决方案适合我.我想分享一些我的细节来完成图片.
我的makefile包含以下目标:
clean:
@echo '$(OS)'
ifeq ($(OS),Windows_NT)
del /s *.o *.d *.elf *.map *.log
endif
Run Code Online (Sandbox Code Playgroud)
当我跑make clean,我看到这个错误:
既然它说出了问题echo,那么我将makefile目标更改为:
clean:
ifeq ($(OS),Windows_NT)
del /s *.o *.d *.elf *.map *.log
endif
Run Code Online (Sandbox Code Playgroud)
这次,make clean给我这个错误:
bash因为我在Windows命令行中工作,所以我很惊讶.
然后我检查了我%PATH%,我看到这个条目:
C:\DevTools\Git\bin
有一个bash.exe与sh.exe该路径.所以我删除了这个条目,它现在工作正常.
但我仍然不知道为什么BASH得到这个???
至于为什么C:\DevTools\Git\bin出现在我%PATH%身上,因为我使用的是Sublime,它总是要求我提供Git二进制文件:
小智 6
我知道这是一个已解决的老问题,但是我想我和我的经验对仍然遇到此问题的任何人都是如此。我收到了相同的神秘错误上校Beauvel(尽管使用Windows MOVE命令,而不是pscp):
process_begin: CreateProcess(NULL, move /y foo\bar.c .\baz.c, ...) failed.
make (e=2): The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
我们的CI运行相同的Makefile,并且运行良好。原来CI正在使用mingw32-make,而我正在使用GNU make。卸载GNU make(作为不相关的批量软件包的一部分安装),并将mingw32-make别名为'make'效果很好。
建立在user3869623的响应上。
在我的情况下,我的%PATH%中包含git \ bin,其中包含bash.exe和sh.exe。
尽管此建议可能允许make运行,但可能会导致git出现问题,尤其是在makefile从git存储库安装软件的情况下。
更好的解决方案是简单地更改%GIT_HOME%\bin为%GIT_HOME%\cmd
| 归档时间: |
|
| 查看次数: |
43661 次 |
| 最近记录: |