linux
、、、、南山小雨、、、、
秋风吹湘水,落叶满南山.
展开
-
如何给目录打patch
目录b中文件在目录a中文件的基础上作了些新增修改,现在打patch,列出这些修改,并且把这些新增修改添加到目录c中的文件中。注意c需要也是a的改版,不然有冲突的地方,最后一步会出冲突。#生成补丁文件,比较目录 b 和 a。#应用补丁文件,将修改添加到目录 c。原创 2024-06-05 09:26:37 · 167 阅读 · 0 评论 -
ubuntu22.10更换阿里源
【代码】ubuntu22.10更换阿里源。原创 2023-11-23 16:59:23 · 971 阅读 · 2 评论 -
E: 仓库 “http://cn.archive.ubuntu.com/ubuntu kinetic Release” 没有 Release 文件。
即使使用的是系统自带的源依然没有,说明已经改变地址,过了维护期了,官方会把过了其的放在old-releases.ubuntu.com里,因此去分别替换一下地址。原创 2023-11-03 17:52:07 · 1688 阅读 · 0 评论 -
av_buffer_ref in libwebrtc.a is referenced by DSO, final link failed:bad value
也就是这些库被认为是连接库,但是它没有连接到其他库上。应该把他连接到实体的库上。如果它本身就是一个实体的库,那么这个库可能出了问题,看看大小是否为0,尝试更换一个新的。这不是在编译阶段,是在链接库时出的问题。原创 2023-08-07 14:06:29 · 376 阅读 · 0 评论 -
ubuntu22.10 ntp服务
在Ubuntu中,NTP指的是Network Time Protocol(网络时间协议)。它可以通过与远程时间服务器同步,确保系统的时钟保持准确。在大多数Ubuntu版本中,NTP服务由ntpd守护进程提供。记住,启用NTP服务可以确保系统的时间与网络时间同步,以确保准确的时间戳和时钟同步。因此,在正常情况下,建议将NTP服务保持开启,除非你有特殊需求需要手动设置系统时间。NTP服务在系统启动时会自动启动,以确保时钟同步。该命令将显示当前系统的时间和日期信息,包括NTP服务的状态。原创 2023-06-29 09:45:54 · 1680 阅读 · 0 评论 -
-fsanitize=address -fsanitize=kernel-address
与用户空间的AddressSanitizer类似,KASan可检测和报告内核中的访问已释放、越界、泄漏和使用未初始化内存的问题。请注意,由于KASan会在内核代码中插入额外的代码,可能会导致程序性能下降,并且需要使用对应版本的内核和编译工具链才能使用。对于已经存在的内核,需要在编译时启用KASan,编译新的内核并且使用新的内核启动系统。当使用-fsanitize=kernel-address选项时,编译器在编译内核时会在内核代码中插入额外的代码,用于在运行时检测内存错误。然后重新运行qmake和构建项目。原创 2023-06-14 09:03:48 · 1595 阅读 · 0 评论 -
Ubuntu查看系统日志的几种方法
系统的许多日志文件都存储在 /var/log 目录中。你可以使用 ls /var/log 命令来列出可用的日志文件。/var/log/Xorg.0.log:包含 X 服务器的日志信息(图形界面)。打开DASH,搜索日志或者log,打开app,这个是/var/log的界面版。这将显示系统日志的末尾,并提供有关系统崩溃和错误的信息。/var/log/kern.log:包含内核日志信息。/var/log/dmesg:包含开机时的日志信息。/var/log/syslog:包含系统日志信息。原创 2023-05-16 10:45:16 · 26237 阅读 · 0 评论 -
openssl生成server.crt和server.key
请注意,由于这是一个自签名证书,所以它不会被任何证书颁发机构(CA)信任。如果你正在为生产环境配置 SSL,你可能需要购买并使用由受信任的 CA 颁发的证书。现在你应该有了 server.crt 和 server.key 文件,它们分别是你的公开证书和私钥。在这一步,你将被要求提供一些信息,如你的国家、省份、城市、组织名称等。这些信息将包含在你的证书中。你可以使用 openssl 命令行工具来生成自签名的 SSL 证书和密钥。这将生成一个有效期为 365 天的自签名 SSL 证书。原创 2023-05-11 17:07:48 · 1790 阅读 · 0 评论 -
wireshark
过滤只显示源是192.168.100.75和目的地址为192.168.100.105,和端口号是918的tcp包。原创 2023-05-06 18:14:19 · 91 阅读 · 0 评论 -
用Valgrind检查内存泄漏
运行Valgrind后,它将显示应用程序的内存使用情况,并列出任何内存泄漏或其他问题。如果有问题,Valgrind将显示哪个函数分配了内存,哪个函数释放了内存,以及分配的内存大小等信息。注意:在使用Valgrind检查应用程序时,会显著降低应用程序的性能,因此不建议在生产环境中使用Valgrind。2.使用Valgrind来检查应用程序的内存问题,需要在编译时添加“-g”参数,以启用调试信息的生成。上述命令中,–leak-check=full指定Valgrind应该如何检查内存泄漏问题。原创 2023-03-20 16:16:48 · 754 阅读 · 0 评论 -
ubuntu22使用中文输入法
在“语言支持”(Language Support)窗口中,选择“键盘输入法系统”(Keyboard input method system)选项卡,然后选择“fcitx”输入法引擎。在“设置”窗口中,选择“区域和语言”(Region & Language)选项卡,然后点击“管理安装的语言”(Manage Installed Languages)按钮。安装完成后,重新启动系统,然后再次打开“设置”窗口,选择“区域和语言”选项卡,然后再次点击“管理安装的语言”按钮。重启系统,使更改生效。重启系统,使更改生效。原创 2023-03-20 10:25:59 · 3942 阅读 · 0 评论 -
top终端详解
1.top命令行使用2.top每行意义3.补充。原创 2023-03-18 16:25:29 · 1067 阅读 · 0 评论 -
iptables不同网段的ip转发
想用软件模拟延时抖动,发现tc只能对收到的流延时抖动,iptables可以处理发出和收到的流,但对收到的流只能做丢包处理,不能模拟延时抖动。将A与B的LAN1直连,B的LAN2与B直连或在同一个网段就行。在B上做ip转发,用iptables的地址伪装MASQUERADE,它其实就是修改源ip和目的ip的方式,即SNAT,DNAT的便利方式。把背包默认网关配置成100.100.100.100,必须要是第一个,优先级最高。此时即可在A上ping通不同网段的C了,由B做中间的路由转发。.........原创 2022-08-29 15:50:53 · 2769 阅读 · 0 评论 -
system()函数启用新进程占有原进程的文件描述符表的问题
我在A程序中占用了/dev/video0这个独占模式的设备文件,在A中用system函数启用了B程序,B程序的代码中并不包含对/dev/video0的访问,但是我发现B程序也占用了/dev/video0,并且我在A程序中关闭了/dev/video0后,A程序不再占用/dev/video0,但是发现B程序依然占用着/dev/video0这是为什么呢?当你在A程序中打开/dev/video0并启动B程序时,B程序继承了A程序打开的所有文件描述符,包括/dev/video0的文件描述符。原创 2023-02-22 20:07:51 · 611 阅读 · 0 评论 -
c++让代码的一部分以root执行,其余以正常用户执行
在 Linux 中,你可以使用 setuid 或 seteuid 系统调用来改变当前进程的用户 ID,从而以 root 权限执行指定的代码。在这之后,你可以使用 setuid 或 seteuid 将用户 ID 改回到正常用户,以避免其他的安全问题。需要注意的是,这种做法存在安全风险,因为在切换为 root 用户后,任何代码都可以执行,这可能会导致潜在的安全问题。因此,应该谨慎使用此技术,并确保只有必要的代码以 root 权限运行。原创 2023-02-18 18:12:57 · 587 阅读 · 0 评论 -
#include ““和#include <>区别
还假设系统的头文件目录是 /usr/include,并且 /usr/include 中有一个名为 myheader.h 的头文件。使用 #include “” 和 #include 最大的区别在于,使用 #include “” 的时候,头文件会在当前目录搜索,而使用 #include 时头文件不会在当前目录搜索。那么,当使用 #include “myheader.h” 时,会优先在 /home/user/src 目录中搜索 myheader.h,如果没有找到,再在预处理器的包含路径中搜索。原创 2022-12-29 15:44:20 · 6710 阅读 · 0 评论 -
使用gdb查找段错误 (核心已转储)出现在哪行代码
你可以使用 bt 命令查看调用堆栈,找到在程序中哪一行代码导致了这个错误。使用 up 命令查看上一个函数的源代码,使用 down 命令查看下一个函数的源代码。你可以使用 gdb 调试器来查找在程序的哪一行代码导致了这个错误。当你的程序出现 “段错误 (核心已转储)” 的错误时,这通常意味着你的程序访问了无效的内存地址,导致程序崩溃。在编译你的程序时,使用 -g 选项生成调试信息。使用 print 命令查看变量的值。使用 list 命令查看源代码。使用 run 命令运行你的程序。使用 gdb 运行你的程序。原创 2022-12-27 14:18:21 · 4290 阅读 · 0 评论 -
配置全局环境变量/etc/environment,/etc/profile区别,sudo -i和sudo su的区别
而 /etc/environment 文件仅包含系统的默认环境变量,但是我们也可以把自定义的环境变量放入这里, /etc/environment里的环境变量不再针对哪一个用户,他对整个系统都生效无论是哪个用户。你也可以在 /etc/bash.bashrc 设置环境变量,这些环境变量会在所有用户切换到 bash 时加载,这时使用sudo su应该可以访问到/etc/bash.bashrc 设置环境变量中的环境变量。/etc/profile 文件是系统的配置文件,它在系统启动时加载,对所有用户都生效。原创 2022-12-26 17:37:48 · 4138 阅读 · 0 评论 -
ubuntu22没有以太网图标
说明没有启用,需要启用一下,修改以下配置文件即可。这里也只有VPN网络,没有PCI以太网。开机后看到有图标了,到这里就结束了。原创 2022-12-22 10:02:59 · 1419 阅读 · 5 评论 -
error: expected unqualified-id before ‘switch’
原因是跟标准库中的函数名相同了,因此改一个名字即可。原创 2022-10-27 16:17:46 · 981 阅读 · 0 评论 -
error: ar not found in PATH. Cannot continue without ar.
./configure --without-sslsudo apt-get install gcc原创 2022-10-25 14:30:12 · 1643 阅读 · 0 评论 -
E: Sub-process /usr/bin/dpkg returned an error code (1)
【代码】E: Sub-process /usr/bin/dpkg returned an error code (1)原创 2022-10-21 11:30:25 · 757 阅读 · 0 评论 -
安装内核切换内核
GRUB_DEFAULT=0 修改为 GRUB_DEFAULT=“1> 2”。第二种方法,开机进入advance界面选择内核。然后重启后就可以进入advance选择内核进入。修改保存之后使用命令更新grub配置。注意:> 与2之间有个空格。查看系统里已经安装好的内核。第一种方法:修改配置文件。原创 2022-10-20 15:12:06 · 2144 阅读 · 0 评论 -
svn命令详解
如果是第二次则可以直接。原创 2022-09-06 16:46:05 · 8510 阅读 · 0 评论 -
socket报错:bind:address already in use
其实就是添加一个setsockopt()函数,SO_REUSEADDR和iSockOptVal都是设置可重复使用的参数,其中iSockOptVal若为0则表示不能重复使用。后来查资料发现即使进程终止,socket也会有一个TIME-WAIT状态,它大概持续2-4分钟,当然也可能更长,过了这个时间就会释放这个端口号。因此先关闭客户端比较好,还有一个原因,这个服务端可能对应多个客户端,当然不能随便因为一个客户端不用了就关闭。这个时候根据进程名和端口号来查进程号,发现都查不到,不由得虎躯一震,背部发凉。.....原创 2022-08-15 17:18:55 · 5094 阅读 · 0 评论 -
terminate called after throwing an instance of ‘YAML::TypedBadConversion<int>‘ what(): bad conver
很多时候已经以上两者都完成了但依然会报类似错误,一个原因就是打开加载了配置文件,没有关闭文件,导致文件中所有信息丢失,这样下次再打开文件取数据就会报这样的错误。在文件中没有找到代码中要取的对应项也会报此错误,此时应该添加此项,如下,配置文件中没有d0或者SdiID就会报此错误。一般是yaml没有有找到yaml文件,此时应该在正确路径建立yaml,确保代码访问的到。...原创 2022-08-12 16:16:25 · 3531 阅读 · 0 评论 -
centos7对yaml的使用
其中在cmake…时,提示cmake需要3.5以上版本,centos7默认版本较低,那么需要先卸载原来的cmake,并升级。yaml冒号后面一定要有一个空格,同级之间对齐,对齐方式要用空格键,不能用tab键。在makefile文件中,引入yaml库,-lyaml-cpp。如果不仅要读取yaml中的内容,还要写入yaml,还需要添加。在代码中引入yaml,头文件添加。删除原来的cmake。...原创 2022-08-01 15:24:56 · 861 阅读 · 0 评论 -
centos7升级gcc和g++到9.4.0
下载gcc包:https://mirrors.aliyun.com/gnu/gcc/ 本博客使用的是这个网站下载https://ftp.gnu.org/gnu/gcc/报:tar (child): bzip2:无法 exec: 没有那个文件或目录缺少包,执行:yum -y install bzip2make时报这个错误是因为gcc g++有组建没装完整,执行:yum install gcc gcc-c++参考这个连接:https://blog.csdn.net/weixin_4242754原创 2022-04-01 17:28:21 · 2223 阅读 · 0 评论 -
cmake实践原文,跟我一起学makefile原文
这个是cmake实践:https://www.kancloud.cn/itfanr/cmake-practice/82983这个是cmake的官方介绍,里面的案例都有源码。https://www.hahack.com/codes/cmake/这个是跟我一起学makefile,博主对原文进行了整理:https://blog.csdn.net/whitefish520/article/details/103968609#t61...转载 2022-03-15 08:31:02 · 153 阅读 · 0 评论 -
SIGINT SIGPIPE SIGTERM SIGSEGV SIG_IGN产生原因及处理
SIGINT:由Ctr+C产生SIGPIPE:A与B进行socket通信,假如A关闭了socket,这个时候B依然write信息发送,当第二次write时,B本机会给这个进程发送一个SIGPIPE信息,SIGPIPE默认的作用是终止这个进程,如果不打算终止的话,那么要自定义对这个消息的处理函数。SIGTERM是kill或killall命令发送到进程的默认信号,它会导致进程终止,如果要在结束之前做些其他的操作,比如保存数据,关闭文件,那么可以自定义对这个信号的处理函数。SIGSEGV:试图访问未分配给自原创 2022-03-11 10:36:16 · 2854 阅读 · 0 评论 -
recipe commences before first target. Stop
Makefile文件的错误,Makefile语法比较严禁,所有命令必须以tab键开头,注意四个空格不行,然后再写命令。原创 2022-03-08 11:04:15 · 833 阅读 · 0 评论 -
strip: Unable to recognise the format of the input file
这个错误是出现在交叉编译过程的,makefile中的strip使用的是本机的strip,应该使用交叉编译工具链的strip执行:type strip得到:strip is hashed (/usr/bin/strip)可见,strip是使用的本机系统的strip在makefile中将:STRIP = strip改为STRIP = arm-linux-gnueabihf-strip...原创 2022-03-07 15:35:05 · 3797 阅读 · 0 评论 -
minicom : usb访问arm
刚刚开始拿到板子,并不知道板子里网口ip,但是知道账户名和密码,使用此方法访问:USB链接arm和主机然后查看设备映射:ls /dev/tty我这里是/dev/ttyUSB0sudo apt install minicom配置minicom:sudo minicom -s选中Serial port setup->Serial Device:改为/dev/ttyUSB0 //这个是arm板usb链接主机在/dev目录下对应的设备运行程序:sudo minicom输入原创 2022-03-05 14:36:13 · 486 阅读 · 0 评论 -
arm与ubuntu之间挂载目录
在ubuntu上执行下列操作:sudo apt-get install nfs-kernel-serversudo apt-get install portmap可能会报:selecting 'rpcbind' instead of 'portmap'这个没问题,rpcbind也可以,并且rpcbind默认安装后就启动了,后面不用再启动了。sudo vi /etc/exports最后一行写入:/home/deviser/share *(rw,sync,no_root_squash)原创 2022-03-05 14:09:09 · 742 阅读 · 0 评论 -
ubuntu安装交叉编译链
官网网址:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/安装交叉编译需要的一些库:sudo apt-get install lsb-core lib32stdc++6检查是否安装成功:arm-linux-gnueabihf-gcc -v原创 2022-03-04 16:08:27 · 317 阅读 · 0 评论 -
gpio,i2c,spi理解
i2c gpio spi 固件 寄存器原创 2022-02-23 17:03:12 · 366 阅读 · 0 评论 -
windows10+ubuntu20.04双系统安装
首先制作ubuntu启动盘,这个比较简单,网上有很多,这里推荐一篇博文,亲测有效,需要先准备一个U盘,备份好里面的东西,因为需要格式化U盘。ubuntu20.04网址制作ubuntu启动盘,操作就是把ubuntu.iso文件解析后写入U盘。一,确定自己的电脑类型确定自己电脑的类型a类: MBR的bios + 单硬盘b类: MBR的bios + 双硬盘(SSD固态 + 机械硬盘)c类: UEFI的bios + 单硬盘d类: UEFI的bios + 双硬盘(SSD固态 + 机械硬盘)第二步:确原创 2022-02-17 09:37:56 · 1176 阅读 · 0 评论 -
c++生产者消费者模型实现(使用锁和信号量)
生产者和消费者模型必须要用到锁和信号量,锁是为了线程同步,即是防止多个线程同时改动公共数据,使得多个线程在访问公共资源时串行执行。信号量是当生产者生产出来数据后,通知消费者。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <pthread.h>// 链表的节点struct Node{ int numb原创 2022-01-21 11:40:49 · 1684 阅读 · 0 评论 -
锁与信号量,同步与互斥
互斥:一个厕所坑位只能一次蹲一个人,其他人只能在门外,已经占有的人对其他人来说就是互斥。同步:流水线上,一个人给手机按了电池,放在流水线上,另一个人拿来盖上盖子,后面一个人再拧上螺丝,这几个人的工作就是同步的。互斥和同步在操作系统的概念中的被称为锁和喜好量。......原创 2022-01-08 22:02:17 · 5399 阅读 · 0 评论 -
git常用命令
git branch -a //看看当前是什么版本git tag //看看都有哪些版本原创 2022-01-06 14:58:58 · 271 阅读 · 0 评论