欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 1.3 编译程序:单个C文件和多个C文件

1.3 编译程序:单个C文件和多个C文件

2025/9/27 17:37:12 来源:https://blog.csdn.net/xiaojingfirst/article/details/148477975  浏览:    关键词:1.3 编译程序:单个C文件和多个C文件

一、编译单个C文件

1.1 源码准备

hello.c 代码:

#include <stdio.h>
int main()
{printf("hello ffmpeg \r\n");return 0;
}

1.2 编译阶段

gcc -c -o hello.o hello.c

gcc 的语法规则:

  • -c 是指只编译程序,不进行链接
  • -o 是指定输出文件名
  • 输入文件:如果一个参数前面什么也没有,则该参数是输入参数
  • 参数顺序没有要求

在这里插入图片描述

分析hello.o文件

  • 目标文件hello.o是ELF格式的文件,包含hello.c的字节码
  • 里面调用的外部函数地址是00占位符,链接时才修正。
    在这里插入图片描述

1.3 链接阶段

gcc -o hello hello.o

在这里插入图片描述

分析hello程序:objdump -d hello
在这里插入图片描述

二、编译多个C文件

2.1 源码准备

源码结构:

laow@m-pc:~/Desktop/cpp/universe$ tree ./
./
├── earth.c
├── earth.h
├── moon.c
├── moon.h
├── sun.c
├── sun.h
└── zeus.c

下载地址:universe.zip

2.2 编译阶段

gcc -c -o zeus.o zeus.c
gcc -c -o sun.o sun.c
gcc -c -o moon.o moon.c
gcc -c -o earth.o earth.c

gcc 编译的时候实际上都是单文件编译
在这里插入图片描述

编译阶段不需要知道 依赖函数的具体实现
在这里插入图片描述

2.3 链接阶段

gcc -o zeus zeus.o sun.o moon.o earth.o

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词