使用 Makefile 编译后如何运行程序
Posted
技术标签:
【中文标题】使用 Makefile 编译后如何运行程序【英文标题】:How to run program after compiling with Makefile 【发布时间】:2015-03-08 02:53:06 【问题描述】:我有一个 assign4a.cpp
、list.h
和 list.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.o
和g++ $(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.o
、list.o
,并且需要构建目标才能运行g++ assign4a.o list.o $(LFLAGS)
。
【讨论】:
以上是关于使用 Makefile 编译后如何运行程序的主要内容,如果未能解决你的问题,请参考以下文章
Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)