Linux服务器编程——Linux系统编程1

来源:互联网 发布:人工智能要学什么 编辑:程序博客网 时间:2024/06/06 02:52

gcc编译的四个阶段

hello.cpp--预处理器(cpp   gcc -E)-->hello.i--编译器(gcc gcc -S)-->hello.s--汇编器(as  gcc -c)-->hello.o--连接器(ld gcc)-->可执行文件

gcc的参数

gcc x.c -o name     输出name可执行文件

gcc x.c -I 头文件路径    指定头文件路径

gcc x.c -D 宏     指定宏

gcc x.c -O     是否优化程序

gcc x.c -Wall   更多警告信息

gcc x.c -g     包含调试信息


静态库的使用

静态库命名规则

lib+库名+.a

制作静态库文件

1.   生成对应的.o文件      -------------》    gcc  -c

2. 将生成的.o文件打包          ar rcs+静态库文件+ .o文件

静态库的优缺点

nm   x.a   查看。a文件的内容

优点:

1.发布程序不需要提供对应的库

2.加载库的速度较快

缺点:

1.库被打包到应用程序中,导致库的体积很大

2.库发生改变,需要重新改变编译


动态库的使用

动态库的命名规则

lib+k库名+.so

制作动态库

1.生成与位置无关的。o文件   ---------------------->    gcc -fPIC -c *.c

2.将.o文件打包    gcc -shared  -o  库名    .o文件

使用方式    gcc  x.c   -L库路径   -l库名

ldd   app   执行程序所依赖的执行库

解决动态库链接问题    export LD_LIBRARY_PATH=./lib

/etc/ld.so.conf

ldconfig -v

动态库的优缺点

优点:

1.执行体积小

2、更新简单

缺点:

1.需要把动态库提供给用户

2.动态库没有打包到程序中,加载速度慢


GDB调试

1.启动GDB

命令 gdb app

2.查看程序源代码

命令  l 文件名:行数/函数

3.设置断点

命令  break   行数 if  条件

4.断点信息

命令 info break

5.下一行

命令  n

6.继续执行,直到下一断点

命令 c

7.查看变量值

命令  p    变量名

8.查看变量属性

命令  ptype 变量名

9.追踪变量的值

命令  display  变量名

10.获取追踪信息

命令   info  display

11.删除追踪

命令    undisplay  行号

12.跳出单次循环,不执行

命令    u

13.跳出当前函数

命令   finish

14.删除断点

命令   del  编号

15.设置变量值

命令  set    var   变量=值

17只执行一步

命令   start

18.单步

命令   s

19.退出GDB

命令    quit


makefile的编写

 命名方式:makefile/Makefile

编写规则:

三要素:目标,依赖,命令

目标:依赖条件

        命令

工作原理

向下检索,构建依赖树,向上执行命令,最终目标文件

阅读全文
0 0
原创粉丝点击