C语言学习笔记 - 编译

c语言编译流程如下:

编译
链接
源代码
对象文件
可执行程序
  1. 源代码即我们自己编写的 .c 或 .cpp 文件
  2. 编译实际执行的是对 .c 或 .cpp 文件的语法检查。若语法有误,编译阶段就会报错,无法通过。
  3. 对象文件是语法检查通过之后生成的 .o 文件,内容简单理解是函数的内存地址和对应的函数名。linux下可以通过
gcc -c test.c

生成 .c 对应的 .o 文件。
.cpp 文件编译为 .o 文件,需执行命令为:

g++ -c test.cpp

想要查看 .o 文件的内容,linux下可以使用命令:

nm -C test.o

内容类似:

000000000000000000 T add(int,int)
000000000000000020 T _main()
                   U _printf()

对象文件里装的是函数的声明,没有函数的定义,也可以通过编译。

PS:函数的定义,指有函数执行过程的函数定义。没有函数体的定义叫函数声明。c语言中,可以先声明函数,在接下来的程序中调用该函数,函数的定义即函数的具体实现可以放在后边或其它文件中。

  1. 链接实际执行的是将程序中涉及到的常量、函数的定义整合在一起,即定义检查,检查通过把它们放在一个文件中即最终的可执行程序。
  • 学习c语言建议 linux 或者 mac 下使用 gcc 或 g++ ,了解具体的编译过程,调试纠错。开发中使用各种ide加快开发速度。
  • 实际项目中,函数的定义都是用专门的文件存放。
  • 实际项目中,可能需要第三方静态链接库。第三方静态链接库也是类似 .c 的文件,编译后生成的是 .a 文件,专门供别人调用,和 include 的系统库 stdio.h 类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值