我有下面的Makefile,我主要是从一个不同的Makefile复制并稍微调整一下。出于某种原因,它正在做一些非常奇怪的事情:
1)当我运行时,我没有得到可执行文件'execute‘,而是得到了a.out,这我不知道为什么。
2) --我不会再做‘制造:’一切‘没什么可做的。’当我背靠背时(这意味着没有什么改变,因此它不需要更新,因此在我看来,这就是Makefile的目的)。如果我能背靠背的话
g++ stern_sim.o mag_cur_loop.o thetaddotMotion.o
我想这意味着它还在试图更新它。每次我以a.out而不是execute结束时,我再一次这样做。不管怎样,在这两个问题上有帮助是很好的。此外,所有缩进都使用选项卡,没有空格(我加倍和三次检查)。
CC= g++
CFLAGS= -c -Wall -lm -std=c++0x
SHELL:=/bin/bash
all: execute
execute: stern_sim.o mag_cur_loop.o thetaddotMotion.o
$(CC) stern_sim.o mag_cur_loop.o thetaddotMotion.o
stern_sim.o: stern_sim.cpp
$(CC) $(CFLAGS) stern_sim.cpp
mag_cur_loop.o: mag_cur_loop.cpp
$(CC) $(CFLAGS) mag_cur_loop.cpp
thetaddotMotion.o: thetaddotMotion.cpp
$(CC) $(CFLAGS) thetaddotMotion.cpp
clean:
rm -rf *.o execute
发布于 2017-11-10 14:43:16
由于历史原因,a.out
是类unix平台上C和C++生成的可执行文件的默认名称。如果您想要调用可执行文件其他内容,则需要使用-o
链接器选项:
$(CC) stern_sim.o mag_cur_loop.o thetaddotMotion.o -o execute
尽管我要说的是,对于可执行文件来说,execute
可能是一个非常糟糕的名称。
https://stackoverflow.com/questions/47232197
复制