makefile 中产生的.o文件生成步骤 去掉貌似无关紧要吧

playlinux 2011-07-26 10:21:35

all :hello
hello:hello.c
gcc -lpthread -o hello hello.c
clean:
rm hello.c


像这样直接 从.c生成 可执行文件就行了么。为什么。。百度出来的makefile 编写规范都要先编译成hello.o文件,
再从hello.o文件生成 hello。。
还有结尾那个clean 貌似要不要看不出什么区别。。。
这两种规范 有什么深意,,求解
...全文
763 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
playlinux 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 thefirstz 的回复:]
即使不写出来,只要编译了,.o文件也是会产生的
写出来更明朗些
[/Quote]
......刚测试了,没有生成.o文件。。
昵称很不好取 2011-07-26
  • 打赏
  • 举报
回复
即使不写出来,只要编译了,.o文件也是会产生的
写出来更明朗些
playlinux 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jackiewell 的回复:]
方便以后编译, 如果没修改就不用再编译了, 而且有需要的时候可以作为库link到别的程序上
[/Quote]
makefile里 用.c 直接生成目标文件。
下次编译的时候使用make
代码没有更改,也不会再编译!
playlinux 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ganjianh8 的回复:]
编译生成.o文件,方便你下次的编译
你下次编译过程中,如果发现之前没修改过的源文件,它就不会重新编译一次
而直接用.c文件生成应用程序或库,每次你修改后要重新编译的时候,就会把时间花费在上面
结尾的clean可以不要,你也可以改名字
譬如你改成
shit:
rm hello.c
你在shell输入
make shit
也是一样的原理
其实那个可以认为是函数(宏)的进口
而……
[/Quote]
那个clean,,明白了。。
关于.o的话, 用.c直接编译的话。。如果源代码没有更改,也不会再编译了呀、、
JackieWell 2011-07-26
  • 打赏
  • 举报
回复
方便以后编译, 如果没修改就不用再编译了, 而且有需要的时候可以作为库link到别的程序上
playlinux 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 abcdef0966 的回复:]
clean:
rm hello.c

你确定是这样?应该是
clean:
rm hello.o
吧?
[/Quote]
这个makefile文件里没有生成 hello.o文件 。这段也就没用了吧。。
abcdef0966 2011-07-26
  • 打赏
  • 举报
回复
clean:
rm hello.c

你确定是这样?应该是
clean:
rm hello.o
吧?
ganjianh8 2011-07-26
  • 打赏
  • 举报
回复
编译生成.o文件,方便你下次的编译
你下次编译过程中,如果发现之前没修改过的源文件,它就不会重新编译一次
而直接用.c文件生成应用程序或库,每次你修改后要重新编译的时候,就会把时间花费在上面
结尾的clean可以不要,你也可以改名字
譬如你改成
shit:
rm hello.c
你在shell输入
make shit
也是一样的原理
其实那个可以认为是函数(宏)的进口
而make后面的参数就是调用哪个函数(宏)
louyong0571 2011-07-26
  • 打赏
  • 举报
回复
makefile的增量编译就是通过.o文件来判断的,要不然make哪知道你哪些文件修改过
justkk 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 playlinux 的回复:]
makefile里 用.c 直接生成目标文件。
下次编译的时候使用make
代码没有更改,也不会再编译!
[/Quote]

你这里只有一个.c文件,你如果有多个.c文件的话,如果只修改其中一个.c文件,那么所有的.c文件都要重新编译

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧