Linux gcc、gdb

Linux gcc、gdb

gcc

动态库与静态库

Linux编译器gcc

课堂作业

1.gcc命令的常用选项:-I、-c、-o 、-D、-g、-Wall、-O

1)列出这些常用选项的作用

  • -l:取消前一个参数的功能
  • -c:只进行预处理、编译、汇编
  • -o :-o file 指定生成的输出文件名为file
  • -D:定义宏
  • -g:在可执行文件中加入标准调试信息
  • -Wall:生成所有级别的警告信息
  • -O:-O[0-3] 编译器优化级别 数值越大级别越高,0表示不优化

2)使用这些选项编译程序,并截图
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMzg1NTEwLzE1ODUyNzcyMDc3NDEtMjg4NjBmMGUtZTA5Zi00N2E5LTkzNDEtMjhkYTVlZjhhNjQ5LnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=31&margin=[object Object]&name=image.png&originHeight=62&originWidth=518&size=10288&status=done&style=none&width=259)

2.分析静态链接库与动态链接库各自的优缺点

  • 静态库
    • 优点:对运行环境的依赖性较小,具有较好的兼容性
    • 缺点:生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间库函数有

了更新,必须重新编译应用程序

  • 动态库
    • 优点:在需要的时候才会调入对应的资源函数简化程序的升级;有着较小的程序体积实现进程之间的资源共享(避免重复拷贝)
    • 缺点:依赖动态库,不能独立运行动态库依赖版本问题严重

3.静态链接库与动态链接库的创建方法和使用方法

  • 静态链接库:
    • 制作:
      • #gcc -C mylib.c -o mylib.o //编译目标文件
      • #ar rc libtestib.a mylib.o //制作静态库
    • 静态库使用:
      • 库函数、头文件均在当前目录下 #gcc -0 my. _test mytest.c libtestlib.a
      • 库函数、头文件假设在/opt目录 #gcc -0 mytest mytest.c -L/opt -ltestlib -I/opt
  • 动态链接库
    • 制作
      • #gcc -shared mylib.c -0 libtestlib.so //使用gcc编译、制作动态链接库
    • 使用1 :
      • 1)库函数、头文件均在当前目录下#gcc -o my. _test mytest.c libtestlib.so
      • 2)库函数、头文件假设在/opt目录 #gcc -0 mytest mytest.c -L/opt -Itestib -l/opt
    • 使用2
      • 1.库函数、头文件均在系统路径下
        • #cp libtestlib.so /lib
        • #gcc mytest.c -0 mytest -ltestlib
        • #./mytest编译运行都不会出错

4.gdb调试程序截图(练习:列出程序清单、运行程序、设置断点、清楚断点、显示程序变量值、单步执行)

![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMzg1NTEwLzE1ODUyNzgzMjg3NDItZDY4MDAzNTktMzE5Zi00Y2RhLTkxNDQtNmFlMDFjZDViMzcwLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=221&margin=[object Object]&name=image.png&originHeight=441&originWidth=722&size=88921&status=done&style=none&width=361)
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMzg1NTEwLzE1ODUyNzgzNjE1NjktNzAzYWFjM2QtYTczNC00NjhjLWFmZjgtMmU5OWRiZTgxZjBhLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=297&margin=[object Object]&name=image.png&originHeight=594&originWidth=801&size=116569&status=done&style=none&width=400.5)
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMzg1NTEwLzE1ODUyNzg1MDEzNTAtNDFjYmM2YmItNThlNS00MTE2LWJkOGMtZjJiNzM3MzhmOWMzLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=297&margin=[object Object]&name=image.png&originHeight=594&originWidth=801&size=131736&status=done&style=none&width=400.5)

你可能感兴趣的:(Linux)