【问题标题】:make: c: command not found制作:c:找不到命令
【发布时间】:2011-03-10 07:26:32
【问题描述】:

我正在尝试运行我的 make 文件,但出现以下两个错误:

make: c: 找不到命令

make: o: 找不到命令

我正在尝试在 cygwin 中执行此操作。我已经安装了 g++ 和 make,但是当我运行 make 文件时,我收到了这些错误。

有什么想法吗?

生成文件:

all: MergeSort clean

MergeSort: main.o MergeSort.o
    $g++ -o MergeSort main.o MergeSort.o

main.o: main.cpp MergeSort.h
    $g++ -c main.cpp

MergeSort.o: MergeSort.cpp MergeSort.h
    $g++ -c MergeSort.cpp

clean:
    rm -rf *o

cleanall:
    rm -rf *o *exe

【问题讨论】:

  • 发布你的makefile,以及你是如何运行它的。
  • codepad.org/UPInzxwg 这是make文件,我在它所在的目录中键入“make”来运行它(那里只有我的文件和makefile。)
  • 我在问题正文中添加了 Makefile。在将代码发布到 SO 时不要使用像 codepad 或 pastebin 这样的网站:如果您的代码示例消失了,那么问题将变得毫无意义。此外,必须打开另一个网页才能看到源代码真的很烦人,尤其是当它很小的时候。

标签: c++ linux makefile cygwin


【解决方案1】:

您需要从$g++ 行中删除$。它试图扩展一些不存在的变量,并从您的命令中吞噬“$g++ -”。

使用变量的语法是:

$(CXX) -c main.cpp

在这种情况下,CXX 是为您定义的 C++ 编译器的路径。您可以通过将以下行添加到您的 makefile 来更改它:

CXX = g++

如果您试图避免回显正在运行的命令 make,请使用 @ 而不是 $

【讨论】:

    【解决方案2】:

    $g++ 没有在那个makefile中定义,所以命令变成了

    -o MergeSort main.o MergeSort.o
    

    -c main.cpp
    

    要么从 $g++ 中删除 $ 并使用 g++,要么在你的 makefile 中定义变量。

    CXX = g++
    all: MergeSort clean
    
    MergeSort: main.o MergeSort.o
        $CXX -o MergeSort main.o MergeSort.o
    
    main.o: main.cpp MergeSort.h
        $CXX -c main.cpp
    
    MergeSort.o: MergeSort.cpp MergeSort.h
        $CXX -c MergeSort.cpp
    
    clean:
        rm -rf *o
    
    cleanall:
        rm -rf *o *exe
    

    【讨论】:

    • 我认为您应该将$CXX$(CXX) 交换为GNU Make(OP 似乎在询问)。
    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2016-07-12
    相关资源
    最近更新 更多