2014-06-18 83 views
-1

我写了一个makefile我的C++程序,如下所示:通过makefile编译 - 没有生成可执行文件?

all: item 

item: main.o item.o 
    g++ -o item main.o item.o 

main.o: main.cpp item.h 
    g++ -c main.cpp 

item.o: item.cpp item.h 
    g++ -c item.cpp 

clean: 
    rm -rf *.o 
    rm -rf item 

进入 '化妆' 成端给我的以下内容:

storm:24% make 
g++ -c main.cpp 
g++ -c item.cpp 
g++ -o item main.o item.o 

然而,进入” ./a.out之后”,端子输出:

storm:25% ./a.out ./a.out: Command not found.

我难倒。我尝试在makefile中的'all'目标之后放置'a.out'以及'.a.out',但我收到了同样的错误。它为什么编译,但不生成可执行文件?如果这有帮助,我可以通过远程访问(通过PuTTY)来访问运行在Linux上的服务器。

谢谢。

回答

2

然而,进入 './a.out',端子输出后:...

为什么你期望有一个./a.out?这是链接器的默认输出,除非与-o选项另有规定,如您-o item在Makefile的动作生成可执行程序所做的:

item: main.o item.o 
    g++ -o item main.o item.o 
#  ^^^^^^^ !!! 

直接让./item运行所产生的程序,而不是./a.out

1

当你做链接,您指定的输出进入item(与-o item),因此,结果应该是在一档名为item而非a.out

0

在Makefile

g++ -o item main.o item.o 

的-o选项意味着你的目标文件的项目。所以我建议你这样做:

./item 
相关问题