amazzzzzing

导航

统计

随笔分类 -  linux

锁的实现
摘要:锁的实现 互斥锁 锁的开销 机制 摘录自:https://www.cnblogs.com/MrLiuZF/p/15143976.html 现在锁的机制一般使用futex(fast userspace mutexes),即内核态和用户态的混合机制。 在futex之前,内核维护一个对象,这个对象对所有进 阅读全文

posted @ 2024-03-11 12:34 amazzzzzing 阅读(28) 评论(0) 推荐(0) 编辑

timed_wait和系统时间
摘要:# timed_wait和系统时间 ## 环境的准备 本文中的试验涉及到手动修改系统时间,因此需要临时禁用自动时间同步服务; 对于ubuntu24.04,可以执行 ```bash sudo service systemd-timesyncd stop ``` ## 问题的提出 在linux中,有几种 阅读全文

posted @ 2023-07-28 00:09 amazzzzzing 阅读(146) 评论(0) 推荐(0) 编辑

system函数的风险和解决
摘要:# system函数的风险和解决 ## 源码摘录 ```c /* Execute LINE as a shell command, returning its status. */ static int do_system (const char *line) { int status = -1; 阅读全文

posted @ 2023-07-10 12:17 amazzzzzing 阅读(124) 评论(0) 推荐(0) 编辑

线程安全和可重入
摘要:# 线程安全和可重入 ## 线程安全 ### 定义 如果一个函数被多个线程并发执行时,这个函数不会出现异常,则称这个函数是线程安全的。 ### 线程安全的破坏 1. 如果这个函数被多个线程调用时,可能会修改同一个资源,则就可能破坏线程安全。 例如,函数访问全局变量: ```c++ #include 阅读全文

posted @ 2023-07-10 12:13 amazzzzzing 阅读(27) 评论(0) 推荐(0) 编辑

链接找不到符号的两种表现
摘要:链接找不到符号的两种表现 本文分析链接时找不到符号时的两个不同表现,帮助快速定位问题。 结论 如果链接时出现找不到符号的问题,需要注意提示信息中的符号是否有函数签名信息。如果有函数签名信息,则是依赖一个C++符号,否则就是依赖一个C符号。 场景还原 库代码: // file: haha.c int 阅读全文

posted @ 2023-02-24 22:14 amazzzzzing 阅读(408) 评论(0) 推荐(0) 编辑

动态库的重复链接
摘要:动态库的重复链接 背景 如果现有系统的库有两个层次,底层库和接口库。接口库通过dlopen的方式加载底层库,接口库提供给用户使用。现在需要在用户层调用底层库的接口,应该如何做? 一个解决方案(有问题的) 一个直观地解决方案就是直接给出底层库需要调用的接口的原型,然后直接调用。由于调用接口需要在编译时 阅读全文

posted @ 2022-12-20 00:26 amazzzzzing 阅读(280) 评论(0) 推荐(0) 编辑

共享库的版本控制
摘要:共享库的版本控制 关于 SONAME 编译动态库时,可以指定 SONAME 字段,SONAME 字段相当于时动态库的链接的名字。生成目标程序的链接步骤中,如果发现动态库中存在 SONAME 字段,则最终生成的目标程序依赖的动态库名字会使用 SONAME 中的名字。也即最终程序运行时,加载器寻找的动态 阅读全文

posted @ 2022-08-02 19:22 amazzzzzing 阅读(80) 评论(0) 推荐(0) 编辑

嵌入式音频卡顿问题分析过程
摘要:嵌入式音频卡顿问题分析过程 问题还原 设备存在一路音频播放数据为从网络传入,在项目进行过程中,观察到音频播放存在不流畅的问题。 分析流程 为直接分析是否是修改引起,将项目进行了回滚。通过大量的回滚和测试,最终确定是编译选项增加了 -O3 引起。初步的解决方案就是在最新版本上去掉了 O3 选项,去掉之 阅读全文

posted @ 2022-01-18 01:19 amazzzzzing 阅读(487) 评论(0) 推荐(0) 编辑

vscode 配置记录
摘要:vscode 配置记录 vscode 启用 clangd 相比推荐的 C/C++ 插件,clangd 在功能可用性上有质的提升。 首先在 ubuntu 上安装 clangd # first install clangd apt-get install clangd-11 # set clangd11 阅读全文

posted @ 2021-12-14 23:15 amazzzzzing 阅读(89) 评论(0) 推荐(0) 编辑

启动脚本
摘要:启动脚本 ubuntu 20.04 默认没有创建 /etc/rc.local 文件,只需要手动创建,并给执行权限即可。 阅读全文

posted @ 2021-11-14 12:09 amazzzzzing 阅读(47) 评论(0) 推荐(0) 编辑

程序的链接
摘要:程序的链接 提出问题 程序在编译过程中,有时候会碰到符号冲突无法编译通过的问题,有时候会碰到符号冲突最终只选择了一个的问题,因此本文从链接的角度讨论一下这两个现象的背后原因。 实例 符号冲突无法链接报错的例子 add.c int add(int a, int b) { return a+b; } a 阅读全文

posted @ 2021-05-28 00:26 amazzzzzing 阅读(71) 评论(0) 推荐(0) 编辑

记一次因为库符号冲突引起的程序崩溃问题
摘要:记一次因为库符号冲突引起的程序崩溃问题 环境 使用了来自第三方的库,在使用提供的头文件编译内部协议库之后,出现了崩溃问题。 解决 尝试调整库的连接顺序 连接的过程是向后查找,也即对于没有找到的符号再向后续连接的库查找。因此如果两个库有同一个符号,则最终使用的符号对应代码可能就不一致(多个库存在相同的 阅读全文

posted @ 2021-04-14 23:43 amazzzzzing 阅读(121) 评论(0) 推荐(0) 编辑

vim常用操作
摘要:vim常用操作 本文主要用来记录 vim 中常用的操作,方便查找(尽管 vim 的帮助文档已经十分强大)。 浏览 跳转 CTRL-I 跳转到新的光标位置 CTRL-O 跳转到旧的光标位置 CTRL-] 跟去tag CTRL-T 返回tag 状态 CTRL-G 显示当前信息 多文件 😒plit :v 阅读全文

posted @ 2021-01-19 23:47 amazzzzzing 阅读(67) 评论(0) 推荐(0) 编辑

ubuntu16.04国内源
摘要:ubuntu16.04国内源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 阅读全文

posted @ 2020-11-26 10:38 amazzzzzing 阅读(54) 评论(0) 推荐(0) 编辑

Shell脚本示例
摘要:Shell脚本示例 目录Shell脚本示例输入与输出字符串测试文件测试流程控制printf内置变量变量数组分隔符调整生成时间获取配置文件中的 = 后的名字按列求和md5sum 过滤掉路径生成 compile_commands.json截取文件中的指定行find 查找目录,并过滤掉 svn 相关目录找 阅读全文

posted @ 2020-10-31 18:15 amazzzzzing 阅读(107) 评论(0) 推荐(0) 编辑

samba禁止创建指定文件
摘要:samba禁止创建指定文件 veto files = /.DS_Store/._*/ 阅读全文

posted @ 2020-10-31 18:13 amazzzzzing 阅读(150) 评论(0) 推荐(0) 编辑

嵌入式开发的一些配置
摘要:嵌入式开发的一些配置 samba服务 在windows下查看linux下的文件,从而实现在windows下编辑,在linux下编译的开发方式。 sudo apt-get install samba 修改/etc/samba/smb.conf配置文件,在文件尾追加: [shared-name] #共享 阅读全文

posted @ 2020-10-31 18:12 amazzzzzing 阅读(224) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示