由foo1.c foo2.c foo3.c 3个源文件组成的源程序生成最终的可执行程序foo的命令:

gcc foo1.c foo2.c foo3.c -o foo

如果处理的源文件不止一个,则gcc会依次对每个文件进行预处理、编译、汇编,最后将所有的目标代码和库文件进行,链接生成可执行程序。即等价于以下步骤:

gcc -c foo1.c -o foo1.o

gcc -c foo2.c -o foo2.o

gcc -c foo3.c -o foo3.o

gcc foo1.o foo2.o foo3.o -o foo

当一个工程包含许多源文件时,采用这种方式(仅用一个gcc命令)来对每个源文件进行编译是非常浪费时间的。另外,如果其中一个文件进行了修改,则需要对所有的文件进行重新编译,显然这是不必要的。因此灵活使用gcc和make是非常重要的。

gcc编译多个源代码文件的过程(引出makefile)相关推荐

  1. Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:) 原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631 ========== ...

  2. linux gcc编译c文件头文件,使用GCC编译器编译C语言

    GCC编译C源代码有四个步骤:预处理-->编译-->汇编-->链接. 可以利用GCC的参数来控制执行的过程,这样就可以更深入的了解编译C程序的过程. 下面将通过对一个程序的编译来演示 ...

  3. linux gcc 编译找不到头文件,找不到库

    找不到头文件 解决方式 (头文件均为编译时刻使用) 1.把头文件路径写成绝对路径,把路径写全,如 (相对路径也行) #include "/usr/include/stdio.h" ...

  4. Linux命令【三】gcc编译+静态库+动态库+makefile+gdb调试

    用C编译器编译源文件:gcc 源文件 -o 可执行文件名 详细步骤: gcc -E a.c -o a.i预处理器将头文件展开,宏替换,去掉注释 gcc -S a.i -o a.s编译器将C文件变成汇编 ...

  5. linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    态库./libpos.so. /root/test/env/lib/libpos.so和/root/test/conf/lib/libpos.so.我们再用源程序 pos_lib.c(见程序5)来创建 ...

  6. 【C语言】GCC编译过程详述

    目录 一.说明 二.GCC语法和参数 2.1 GCC语法 2.2 参数 2.3 C程序中的头文件包含两种情况∶ 三.基本规则 四.更多的常用选项 4.1 编译的时候 4.2 预处理选项 4.3 警告选 ...

  7. 将如下c语言代码汇编成s文件,gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...

  8. Linux(gcc编译原理、过程以及常用调试命令)

    PS:红色字体表示重点,绿色字体表示重要标题,块引用中表示Linux终端中的命令. 1.gcc / g++的安装 命令:sudo apt install gcc /gcc+ 2.gcc编译连接 //m ...

  9. armgcc交叉编译的文件无法运行_从0开始搭建基于ARM GCC的软件系统02——使用ARM GCC编译SDK

    本文以STM32L4VGT6为例,因为手上只有这么一块开发板.其它IC处理方法应该类似. 一.准备工作 1.打开官网https://www.st.com/content/st_com/en.html, ...

最新文章

  1. JVM笔记6-垃圾回收器
  2. 【STM32】FreeRTOS 任务切换
  3. 迁移学习---inceptionV3
  4. SEO中HTML标签权重
  5. Java面试知识点总结宝典助你通关!成功入职字节跳动
  6. C++ vector查找某个特定元素是否存在
  7. Python库大全涵盖了Python应用的方方面面建议收藏留用!
  8. The Geometry has no Z values 解决办法
  9. 【Spark工作原理】Spark任务调度理解
  10. uint8_t / uint16_t / uint32_t /uint64_t
  11. CCF - 201412-1 - 门禁系统
  12. vue报错RangeError: Maximum call stack size exceeded
  13. mysql通配符大全_MySQL模糊查询用法大全(正则、通配符、内置函数等)
  14. 部分国家人均GDP和生活满意度可视化
  15. px4初探-qgroundcontrol安装
  16. 微信小程序-文字跑马灯
  17. 嵌入式监控【v4l2采集->vpu编码->live555推流】
  18. 联通发布“沃云”品牌 推出云计算产品
  19. Flash activex控件版本信息
  20. 人类特有本能:保护族群老弱病残

热门文章

  1. JAVA UDP网络编程学习笔记
  2. django第二个项目--使用模板做一个站点访问计数器
  3. 扩大swap分区--Ubuntu手记之系统配置
  4. body onload 控制窗口大小 html,如何实现在调整浏览器窗口大小时缩放的网页?
  5. html 天气特效,用CSS制作天气特效动画,源码分享
  6. python 微信支付接口 详解_Python支付接口汇总大全(包含微信、支付宝等,长期更新、欢迎补充)...
  7. 搬运机器人举杯贺所需的条件_智能搬运机器人比赛规则
  8. c++函数传参:值传递、指针传递、引用传递
  9. java优秀算法河内之塔_河内塔的Java程序
  10. Java BufferedReader reset()方法及示例