gcc编译

gcc编译工具链

1.什么是编译器?

    机器只能够识别0和1的机器语言,不能识别高级语言编写的程序。

    高级语言编写的程序——》机器语言——》编译器(承担翻译官的角色,编译器也是一个程序)。

2.有了编译器有什么好处?

    让人可以编写更适合人类思维的高级语言,而不用编写机器语言程序,也不用考虑怎样将高级语言转化为机器语言。

gcc编译器,也是一个交叉编译器就是编译和运行的平台不一样。

从高级语言——》机器语言要经过以下几个步骤:

    1.预处理:gcc -E 文件名 -o 文件名.i  (.i)文件

        处理什么?

        ①头文件:#include<stdio.h>

        ②宏定义:#define MAX 10

        ③条件编译:# if... # else... # endif

        ④注释:

        预处理的目的:处理一些不是核心的东西,让编译器处理最核心的东西。

    2.编译阶段

        将文件编译成汇编文件(.s)文件

    ①gcc -S demo.i

    ②gcc -S demo.i -o demo.s

    ③gcc -S demo.c

    ④gcc -S demo.c -o demo.s

    3.汇编

        将文件生成机器码(.o)文件

        gcc -c demo.c

        gcc -c demo.i   (前提有.i文件)

        gcc -c demo.s  (前提有.s文件)

    4.链接阶段

        平常使用  gcc -c demo.c  默认生成 a.out 文件

                       gcc -c demo.c -o demo 与 a.out 内容一样

        静态封装

            实现的需求:能够调用自己写的加法函数

            1.编辑要封装到库里的函数实现;   add.c

                ①需要两个加数;

                ②对两个加数进行相加;

                ③返回或者输出加数和;

                -w 关闭警告 -wall 打开警告

            2.把add.c封装成库,

                ①生成目标文件gcc -c demo.c

                ②将目标文件封装成库;

                        ar  rcs  libadd.a  add.o

                        libadd.a :lib是前缀,表明这是一个库;add是库的名字,.a表明是一个静态库;

                ③执行文件:./a.out 当前文件下执行。

        




    


               


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值