【问题标题】:Cygwin make can't find cygwin commandsCygwin make 找不到 cygwin 命令
【发布时间】:2010-07-21 09:42:16
【问题描述】:

在尝试安装构建服务器时,我遇到了一个有趣的问题,所有 cygwin 命令都可以从 DOS 框运行,但有时从 make 调用时不起作用。更奇怪的是,有些 make 目标,比如 'clean',work 而其他的,比如 'all',却没有。

这是一个代表性的 makefile 提取。引用已经破坏了格式,但标签应该在它们应该在的位置,相信我:

 .PHONY: all 
 all: update_autoconstants
    /usr/bin/rm -f $(OBJ_DIR)/myfile1.txt   
    rm -f  $(OBJ_DIR)/myfile2.txt   

 .PHONY: clean 
 clean:     
    rm -f $(OBJ_DIR)/*.*

请注意,在“全部”中,一个 rm 调用具有完整路径,一个没有路径。另请注意,clean 的 rm 调用没有路径。

对此,“make -C makefile all”的响应是:

/usr/bin/rm -f ../../obj/myfile1.txt 
rm -f ../../obj/myfile2.txt 
make: rm: Command not found 
make: *** [all] Error 127

即。完整路径有效,无路径无效。然后让我头晕目眩的是make中的“干净”目标,没有路径可以正常工作。不仅仅是cygwin命令,make也找不到编译器。似乎很清楚,尽管环境变量 PATH 已设置,但路径已在某处被冲洗,但仅在 make 中 - 这在 DOS 提示符下工作正常。

C:\>cygpath --unix c:\programme\cygwin\bin\rm  
/usr/bin/rm

这台机器在 VMWare ESX 上的虚拟机中运行 Windows Server 2003 德语,昨天完成了 cygwin 安装,安装在 c:\programme\cygwin\ 中,其他一切都是干净的 vanilla Windows 安装。

有什么想法吗?提前致谢。

【问题讨论】:

  • “环境变量PATH已设置,但只在make中”是什么意思?
  • 啊,抱歉,这不是很清楚 - PATH 变量是在 Windows 中以正常方式设置的。使用“make”时,似乎 PATH 未使用或不正确,即。 make 找不到路径上的 exe 文件。我在生成文件中添加了一个@echo $(PATH) 并得到:/cygdrive/c/Programme/Source Insight 3:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32 /Wbem:c:/Programme/TASKING/c563 v3.6r1/bin/:/usr/bin:/cygdrive/c/Programme/IDM Computer Solutions/UltraEdit/
  • 抱歉,不知道有什么问题。

标签: path makefile cygwin


【解决方案1】:

与其说是一种解决方案,不如说是一种解决方法——我们让所有的 makefile 都使用他们需要的 exe 文件的绝对路径,这在任何情况下都比搜索路径并获取你找到的内容要好一些。

也许最好在 cygwin 的 bin 目录中调用一些谷歌搜索命令:

CYGWIN_EXE_PATH = /usr/bin
RM        = $(CYGWIN_EXE_PATH)/rm.exe
.PHONY: clean
clean:
    $(RM) -f $(OBJ_DIR)/*.*

程序文件目录中的类似文件如下:

COMPILER_DIR = "$(PROGRAMFILES)/TASKING/c563 v3.6r1"

希望对您有所帮助。

【讨论】:

  • 您没有找到更好的解决方案吗?
【解决方案2】:

我也有同样的经历。

make 在 makefile 中找不到 rm。

我的解决方法是在 bash 中运行 makefile。以前我只是从 Windows cmd 框中运行 make 。这解决了我的问题,但产生了新的问题。在制作期间创建的某些文件的权限设置了非常奇怪的权限。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2014-04-26
    相关资源
    最近更新 更多