我的程序有以下makefile。它创建了program.o文件,但是当我尝试运行它时
./program.o
我收到以下错误:
./statsh.o: Permission denied.
为什么会发生这种情况的任何想法?
HEADERS = statsh.h functions.h
default: statsh
statsh.o: statsh.c $(HEADERS)
gcc -c statsh.c -o statsh.o
statsh: statsh.o
gcc statsh.o -o statsh
clean:
-rm -f statsh.o
-rm -f statsh
答案 0 :(得分:4)
.o
文件只是一个临时产品。它包含编译器为单个编译单元生成的机器代码(基本上,这里是.c
文件)。但是,该文件无意执行 - 正如您已经发现的那样,它实际上无法执行。
makefile生成目标文件statsh
。那是你想要执行的那个。它包含来自statsh.o
的代码,以及库例程等。它由您的makefile按规则生成
statsh: statsh.o
gcc statsh.o -o statsh
调用GCC以使链接器/绑定器将各个部分组合在一起并构建目标程序。