使用 Makefile 编译后如何运行程序

Posted

技术标签:

【中文标题】使用 Makefile 编译后如何运行程序【英文标题】:How to run program after compiling with Makefile 【发布时间】:2015-03-08 02:53:06 【问题描述】:

我有一个 assign4a.cpplist.hlist.cpp 文件。我用我的 make 文件编译了它们,但不知道我将使用什么命令来运行程序。

我尝试运行的已经尝试过

a.out./a.out

他们都给我“找不到命令”

生成文件

CFLAGS = -c -Wall -g
LFLAGS = -g -o assign4a

assign4a: assign4a.o list.o
    g++ assign4a.o list.o $(LFLAGS)

assign4a.o: assign4a.cpp list.h
    g++ $(CFLAGS) assign4a.cpp

list.o: list.cpp list.h
    g++ $(CFLAGS) list.cpp

clean:
    rm -f assign4a *.o *~ *#

【问题讨论】:

以后你还应该尝试运行ls,看看你的makefile产生了什么输出 【参考方案1】:

./assign4a.

您的 makefile 将构建程序并将可执行文件 assign4a 放入工作文件夹。

而且,你的 makefile 是错误的。

应该是g++ $(CFLAGS) assign4a.cpp -o assign4a.og++ $(CFLAGS) list.cpp -o list.o

【讨论】:

我收到了error cannot execute binary file: Exec format error。请帮忙。 @MonuChaudhary 我不知道你为什么会出现这个错误。您正在运行交叉编译的二进制文件吗? @maowtw 是的,它是一个交叉编译的二进制文件。【参考方案2】:

你需要打电话

./assign4a

Makefile 定义了目标和它们之间的依赖关系。这里:

assign4a: assign4a.o list.o
    g++ assign4a.o list.o $(LFLAGS)

assign4a 是一个目标,它依赖于文件assign4a.olist.o,并且需要构建目标才能运行g++ assign4a.o list.o $(LFLAGS)

【讨论】:

以上是关于使用 Makefile 编译后如何运行程序的主要内容,如果未能解决你的问题,请参考以下文章

如何调试makefile

为啥我的程序在使用 makefile 编译时会变慢?

Makefile入门(八):make运行

Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)

使用 makefile 在 Xcode 4 中运行 C 程序

CANNOT LINK EXECUTABLE 错误。如何将运行时库添加到 NDK 编译代码