linux学习笔记

linux学习笔记

一、静态库与动态库的制作

1.1 静态库

1.1.1 静态库编译时与主程序一起编译

1.1.2 g++ -c -o xxx.a xxx.cpp就可以制作一个静态库

1.1.3 g++ -o xxx xxx.cpp xxx.a(或者用-L指定库目录 -l指定库名称)可以把静态库和主程序编译为一个可执行文件

1.2 动态库

1.2.1 程序运行时候才会载入

1.2.2 g++ -fPIC -shared -o xxx.so xxx.cpp可以制作动态库

1.2.3 使用方法与静态库相同,如果编译时候存在同名的静态库和动态库,优先使用动态库

1.2.4 后缀为so

1.2.5 linux下使用动态库需要通过LD_LIBRARY_PATH环境变量来指定动态库的位置

二、make与makefile

2.1 一个规则

目标文件:依赖文件

  执行语句

2.2 两个函数

wildcard目录下全文件类型名称匹配
patsubst 目录下全类型文件后缀替换

2.3 伪目标

.PHONY 不检查依赖项,直接执行命令

2.4 几个变量

$开头的几个变量

三、gdb的使用

3.1 

gdb xxx开始调试程序
gdb xxx -p 进程号 调试正在运行中的程序

3.2 

b设置断点
set args设置运行参数 参数如果包含特殊字符,可以将参数用双引号括起来
r 运行程序
s 步入程序 如果没有源码,就无法步入只会进入下一行
n 步过程序
p 打印变量或者表达式的结果
c 继续运行到下一个断点
q 退出gdb
set var xx= 123 设置变量的值
list 显示源代码
info b查看断点

3.3

ulimit -a 查看系统参数 系统参数缺省不会生成core文件
ulimit -c unlimit 把core文件大小限制设置无限制
运行程序,程序崩溃,形成core文件
gdb 程序名 core文件名 利用core文件调试程序
bt 查看中断时候函数调用栈

3.4 

调试多进程时,缺省调试的默认为父进程,
进行fork前使用set follow-fork-mode child可以切换到调试子进程
使用set detach-on-fork [on/off]可以设置调试时候其他进程是否正常进行
info inferiors 查看调试的进程
inferiors 进程id 切换当前调试进程

3.5 

调试多线程时
info threads 查看线程信息
thread 线程id 切换调试线程
set scheduler-locking [on/off]设置调试时候其他线程是否正常进行
thread apply all/线程id gdb命令 指定所有或者某条线程执行命令

posted @ 2023-07-05 20:18  过客匆匆,沉沉浮浮  阅读(8)  评论(0编辑  收藏  举报