我为我的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
在终端输入'make'给了我以下内容:
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上运行的服务器来实现的。
感谢。
答案 0 :(得分:3)
然而,在输入' ./ a.out'后,终端输出:...
为什么期望有./a.out
?这是链接器的默认输出,除非使用-o
选项另行指定,就像在makefile构建可执行程序时使用-o item
所做的那样:
item: main.o item.o
g++ -o item main.o item.o
# ^^^^^^^ !!!
只需致电./item
即可运行生成的程序,而不是./a.out
!
答案 1 :(得分:1)
当您执行链接时,指定输出到item
(带-o item
)因此,结果应该位于名为item
的文件中,而不是a.out
答案 2 :(得分:0)
在你的makefile中
g++ -o item main.o item.o
选项-o表示您的目标文件是项目。 所以我建议你这样做:
./item