自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

转载 Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法

Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法

2022-12-05 10:02:04 1711

转载 SO 动态库崩溃问题定位

SO 动态库崩溃问题定位一、需求分析so 的崩溃并不像 Java 代码那么好定位,我们通常看到的就只是 so 中的一大段崩溃的堆栈信息。那么我们怎么通过这个堆栈信息来定位我们的问题呢?二、ADDR2LINE介绍Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。一般适用于 debug 版本或带有 symbol 信息的库。工具位置我们下载的 NDK 里面已经默认有了这个工具,对应的路径如下

2021-12-03 15:50:41 1552

原创 用GDB调试程序

用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3

2021-10-13 17:09:05 229

原创 Vi编辑器上下左右输出ABCD解决方法

Vi编辑器上下左右输出ABCD解决方法问题解决$sudo apt-get install vim或者echo “set nocp” >> ~/.vimrc (千万要注意,是>>, 而不是>, 否则把.vimrc清空了,丢失了之前的内容)source ~/.vimrc...

2021-09-24 13:44:34 257

原创 Makefile

Makefile内核makefile的几种编译方式直接编译:obj-y +=xxx.o;表示由xxx.c或xxx.s编译得到xxx.ko并直接编进内核。条件编译:obj-$(CONFIG_HELLO) +=xxx.o;根据.config文件的CONFIG_XXX来决定文件是否编进内核。模块编译:obj-m +=xxx.o;表示xxx作为模块编译,即执行make modules时才会被编译。简单makefile编写...

2021-09-23 22:37:40 49

原创 gitlub密钥生成

gitlub密钥生成1 Git生成秘钥SSH 秘钥默认储存在账户的主目录下的 ~/.ssh 目录如:查看是否包含id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有.pub 后缀的文件就是公钥,另一个文件则是密钥。如果有这两个文件,则跳过1.2;如果没有这两个文件,甚至.ssh目录也没有,则需要用ssh-keygen 来创建.1.2 生成秘钥信息在.ssh 目录下若第一次生成ssh-keygen -t rsa -C "508762703@qq.c

2021-08-25 11:00:11 1549

转载 C语言中<<、>>、&、|的实际用途

原版添加链接描述作为一个开发人员,在看别人项目或者看第三方库的源代码时,可能经常会看到譬如a>>4&0x0f这样的写法,对于一些初入行的童鞋来说可能就不是太明白这是什么意思。下面我们就来讲解这几个运算符的实际用途。一、运算符的含义二、用途按位与的用途1.清零若想对一个存储单元清零,即使其全部二进制位为0,只要对这个存储单元当前的值取反(也就是原来的数中为1变为0,0变为1),然后使二者进行&运算,即可达到清零目的。比如a=23,b=~a:a:00010111b

2021-06-30 14:30:05 225

转载 结构体对齐计算方式

结构体对齐计算方式结构体的大小也不是成员类型大小的简单相加。需要考虑到系统在存储结构体变量时的地址对齐问题。由于存储变量地址对齐的问题,结构体大小计算必须满足两条原则:一、结构体成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)二、结构体大小必须是所有成员大小的整数倍(数组除外,结构体中的结构体按单个变量计算)1、简单结构体struct s1{ char ch1; //1 char ch2; //1 int i;//4};这个结构体的大小容易计算,满足两个原则即可,为8,

2021-03-19 15:50:42 92

转载 32位和64位常用数据类型所占字节数

32位和64位常用数据类型所占字节数32位编译器:char :1个字节指针变量: 4个字节short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 4个字节long long: 8个字节unsigned long: 4个字节64位编译器:char :1个字节指针变量: 8个字节short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节

2021-03-06 16:30:37 3172

原创 Linux 多线程

Linux 多线程一、线程简介线程是一个进程内的基本调度单位,好比轻量级的进程。1.多个线程在一个进程的共享内存空间中并发执行,它们共享一个进程的资源,如文件描述符和信号处理等,大大减少了上下文的开销。 运行于一个进程中的多个线程。2.它们彼此之间使用相同的地址空间共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间。3.线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。总的说来, 一个进程的开销大约是一个线程开销的 30 倍左右。 不同进程具有独立的数据空间,其数

2021-02-25 16:23:34 56

原创 IPC (管道、FIFO、消息队列、共享内存、信号、信号量)

IPC (管道、FIFO、消息队列、共享内存、信号、信号量)进程间通信(IPC,InterProcess Communication)的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。一、管道管道是基于文件描述符的通信方式。当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1]。其中fd[0]固定用于读管道,而fd[1]固定用于写管道。①半双工通信模式。②只用于具有亲缘关系的进程之间的通信。如父子进程、兄弟进程、③可看成是一种特殊的文

2021-02-20 20:41:13 293

原创 Linux内核驱动基础框架

Linux内核驱动基础框架驱动代码#include <linux/fs.h> //file_operations 声明#include <linux/module.h> //module_init module_exit 声明#include <linux/init.h> // __init __exit 宏定义声明#include <linux/device.h> //class device 声明#include <l

2021-02-14 12:44:15 103

原创 树莓派Linux源码配置和编译

树莓派Linux源码配置一.驱动代码的编写驱动代码的编译需要一个提前编译好的内核,编译内核就必须配置配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核厂家配linux内核源码,比如说买了树莓派,树莓派linux内核源码第一种方式:cp 厂家.config .config第二种方式:make menuconfig 一项项配置,通常是基于厂家的config来配置第三种方式:完全自己来二.配置树莓派的Linux内核(1)驱动两种加载方式:

2021-02-10 14:18:32 169 1

原创 交叉编译链的工具安装和使用

交叉编译链的工具安装(一)交叉编译链的工具安装网站https://github.com/raspberrypi/1.从共享文件夹拷贝到工作目录cp /mnt/hgfs/share/tools-master.zip .2. 解压unzip tools-master.zipcd /home/CLC/tools/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/binpwd获得路径(二)配置环境变量

2021-02-08 16:45:34 194

原创 树莓派wiringPi库,串口通信

树莓派wiringPi库,串口通信(一)串口通信 使用时需要包含头文件:#include <wiringSerial.h>(二)修改配置/* 修改 cmdline.txt文件 */>cd /boot/>sudo vim cmdline.txt删除【】之间的部分dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 ro

2021-02-07 20:50:43 267

原创 树莓派超声波C语言

树莓派超声波C语言超声波测距原理:是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40KHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此听过发射信号到的回响信号时间间隔可以计算得到距离。

2021-02-07 17:40:12 606

原创 树莓派学习——库的概念、制作静态库、动态库

Linux 共享库、静态库、动态库解析:1. 介绍程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries):1、静态函数库,是在程序执行前就加入到目标程序中去了 ;2、动态函数库 同 共享函数库是一个东西( 在linux上叫共享对象库, 文件后缀是.so ,windows上叫动态加载函数库, 文件后缀是.dll ) Linux中命名系统中共享库的规则 :(一

2021-02-07 11:54:38 115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除