makefile 编译效率问题

Simpledcc 2017-10-04 08:12:40
gcc编译.o文件和编译.c文件有什么区别?makefile直接编译.c会将所有的.c文件
都重新生成编译,但是编译.o的时候为什么就不需要将所有的都重新编译呢?
/*--------------------------------------------------------
app:add.o div.o mul.o sub.o main.o
gcc -o app add.o div.o mul.o sub.o main.o -I include/
add.o:add.c
gcc -c add.c -I include
sub.o:sub.c
gcc -c sub.c -I include
div.o:div.c
gcc -c div.c -I include
mul.o:mul.c
gcc -c mul.c -I include
main.o:main.c
gcc -c main.c -I include
--------------------------------------------------------------------*/

/*----------------------------------------------------------------

app:add.c div.c mul.c sub.c main.c
gcc -o app add.c div.c mul.c sub.c main.c -I include/
-----------------------------------------------------------------*/
...全文
192 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Simpledcc 2017-10-05
  • 打赏
  • 举报
回复
gcc编译的时候是不是对待.o文件只是进行链接处理,所以才不会像直接编译.c文件那样.
destory27 2017-10-05
  • 打赏
  • 举报
回复
Makefile 就是为了解决所有文件重复编译的问题,,会根据时间截决定该文件是否需要重新编译, 最终链接的还是.o文件 gcc -o app add.c div.c mul.c sub.c main.c -I include/ 是直接生成了可执行文件 集预处理 编译 汇编 链接 于一体 gcc -c add.c -I include 是产生了中间文件.o文件 最终将.o文件链接在一起 这是Makefile 就会起到作用
destory27 2017-10-05
  • 打赏
  • 举报
回复
引用 2 楼 Simpledcc 的回复:
gcc编译的时候是不是对待.o文件只是进行链接处理,所以才不会像直接编译.c文件那样.
不只是简单的链接处理 ,,,我知道的一点是 会进行标识符检查,比如变量的重复定义,因为每个.cpp文件生成一个.o文件可以,单独编译时没问题,当这些.o文件链接在一起,可能会出现个这种问题 。 (类的静态数据成员初始化:要是初始化过程放到.h文件中,,很有可能导致重复定义) 只针对 “.o文件只进行链接处理” 的解释

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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