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