课堂整理

Linux 开发工具:编译器:gcc

          调试器:gdb

             工程管理器:make

             脚本语言:shell

 

gcc特点:(1)可编译多种语言

      (2)交叉编译:当前CPU平台上在不同CPU编译(不同CPU不同汇编)

 

编译器的编译过程:预处理 编译 汇编 链接

 

预处理:①头文件展开 ②宏替换 ③条件编译(可用于大段注释)

 “ ”:搜索路径先在当前目录寻找,然后到系统头文件寻找,否则报错

  < > :搜索路径系统头文件              

 “ ”:用户自定义的头文件 (全用“ ”编译效率低)        

  < > :系统自带的头文件           

gcc -E demo.c > demo.i  -E只运行预处理,‘>’重定向:预处理完后输出到demo.i中

 

编译:gcc -c demo.c  产生 .o 目标文件      

语法检查、词法分析

             

汇编: gcc -S demo.c产生 .s 的汇编文件

             

链接:链接做哪些工作?

把程序中所有的目标文件和所需的库文件都链接在一起,建立符号表,最终生成一个可执行文件。

 

#file a.out     可以查看属性

gcc hello.c -o hello (gcc -o hello hello.c)给可执行文件重新命名  ./hello 运行  

rm -f demo.* 删除所有有关demo的东西             

DSP处理器,做图像处理,浮点型功能比较强

time ./a.out 统计运行时间

               

三级优化:一级优化:gcc -O1 deme.c

       二级优化:gcc -O2 deme.c                  

       三级优化:gcc -O3 deme.c

               

gcc -w     关闭所有警告          gcc -Wall   打开所有警告    

gcc hello.c add.c     编译两个程序

C头文件在 /usr/include中

1、可以在程序中直接写路径,但这样会不可移植

2、gcc main.c add.c -o add -I ../  -I 指定头文件第三方搜索路径

 

gcc main.c -I ../ -DMAX    -D从外部定义一个MAX的宏(-DMAX=100,则相当于在程序中加了:#define MAX 100

       

-static有何作用?

禁止调用动态库,优先使用静态库。

 

库文件:里面保存函数和变量,可以使用,但看不到变量的定义,函数的实现

          

静态库: .a后缀       编译时加载  

动态库: .so后缀      执行时加载

库的搜索路径: /lib/     

               /usr/lib  

 

静态库与动态库区别:(1)静态库执行速度快

               (2)动态库编译速度快

                    3)静态库编译程序可执行文件更大,占用内存多

               (4)动态库升级容易

               (5)静态库代码易部署

静态库的制作:(1) gcc -c add.c 编译生成后缀为 .o 的目标文件

         (2)ar rcs libadd.a add.o  lib为前缀,add为库名, .a为后缀

               ar静态库不存在就创建该库文件s更新库文件)

         (3)把libadd.a放到默认路径中,即 /lib/ 或 /usr/lib 中

         (4)gcc main.c -ladd (-l表示连接一个库)       

            gcc main.c -ladd -L/root/test  -L指定库文件搜索路径

说明文档touch readme

 

动态库的制作:(1)gcc -shared -fPIC -o libadd.so add.c  生成动态库libadd.so

          (2)gcc main.c /root/test/libadd.so -o add 指定动态库路径

 

libc.a  libc.so  C语言自带函数库(如printf  scanf)

libm.a  libm.so  数学库 使用sin函数时,编译时需要连接到数学库中:gcc main.c -lm

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值