c++ - Makefile 没有产生预期的文件输出

标签 c++ makefile

我有以下 Makefile,我主要从不同的 Makefile 复制过来并稍作调整。出于某种原因,它正在做一些非常奇怪的事情:
1) 当我运行 make 时,我没有得到可执行文件 'execute' 而是我得到了 a.out,我没有知道为什么。
2) 当我背靠背完成任务时,我不会返回“make: Nothing to be done for ‘all'.”(暗示因此没有任何改变它不需要更新,因此我认为 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

最佳答案

由于历史原因,

a.out 是类 unix 平台上 C 和 C++ 生成的可执行文件的默认名称。如果你想调用其他的可执行文件,你需要使用 -o 链接器选项:

$(CC) stern_sim.o mag_cur_loop.o thetaddotMotion.o -o execute

虽然我会说 execute 对于可执行文件来说可能是一个非常糟糕的名字。

关于c++ - Makefile 没有产生预期的文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47232197/

相关文章:

c++ - boost POOL 使用率 - 单例

c++ - Boost Graph Library - 来自外部 vector 的权重属性

c++:OpenMP 和非随机访问 STL 容器——一种可能的解决方法

c++ - 案件未执行

c++ - 如何可视化 C/C++ #define 指令?

Makefile:配方中模式规则%的重用值

makefile - Make - 自动生成文件问题

c++ - g++ 无法找到此方法,即使它包含在内

linux - 基于配对的密码学 (PBC) 签名库 (pbc_sig-0.0.8) 制作失败

python - 从源代码安装Python 3.1.2,如何解决sqlite3-dev依赖关系?