GCC定义和应用

1、GNU CC(gcc)是GNU项目中符合ASNI C标准的编译系统

        ①GPL协议:开源社区的协议,里面资源课免费试用,但是做了修改必须上传共享

        ②Linux与Unix达成POSIX协议,只要基于POSIX协议,则编译出的应用两者均

          可使用

        ③GNU计划:区别Linux与Unix的不同,且只能运行与Linux

2、gcc是一个交叉的平台编译器,可以再当前的CPU平台上为多种体系结构的硬件平台开

发软件

3、gcc编译经过4个阶段,分别为:预处理、编译、汇编、链接

A、预处理阶段:

       预处理进行三个阶段,分别为:增加头文件、宏替换、条件编译(即开头带#的处理)

       在预处理阶段,不做语法的检查

       编译命令:gcc -E main.c -o mian.i     处理mian.c并存放于main.i

       举例:

       头文件的处理:a、头文件是<>时,在系统目录中找,找不到则报错

                     b、头文件是””时,先在当前目录找,再到系统目录找,找不到报错

       举例:头文件在当前目时:

    B、编译阶段

   在编译阶段作语法检查和词法分析

   编译命令:gcc -c main.c -o mian.o   生成main.o文件

   举例:

C汇编阶段

   gcc -s hello.c 生成hello.s 文件

14、库函数:只可以调用,但是看不到里面的内容

库文件:看不到库文件里面定义的函数和变量,但是可以调用。库文件分为静态库和动    

        态库

静态库(.a结尾):在编译时讲库文件里面的代码搬迁到可执行文件中

      静态库的建立:<1>先编译生成.o文件(gcc -c )

                    <2>ar rcs libadd.a add.o(rcs中,rc是指静态库不存在则创建静态

                       库,s表示更新静态库)

                    <3>编译生成gcc main.c -ladd -L/...

举例:

动态库(.so结尾):在执行时将需要的库文件里的代码搬迁到可执行文件中

      动态库的建立:生成.so文件:gcc -shared -fPIC add.c -o libadd.so

      动态库的调用:gcc main.c ./ilbadd.so -o add

举例:

                     

动态库和静态库的优缺点:①静态库执行速度快,动态库执行速度慢

                        ②静态库的空间占用率高,代码拥挤;动态库相反

                        ③静态库不易升级,动态库易于升级

                        ④静态库布局方便,动态库布局麻烦

动态库和静态库的使用:如果平台常升级,则用动态库方便;如果要提高编译效率则用

                      静态库       

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值