linux
文章平均质量分 65
商汤科技
这个作者很懒,什么都没留下…
展开
-
Git中tag使用教程
git tag转载 2022-11-02 14:33:31 · 10214 阅读 · 2 评论 -
[Linux]proc文件系统
linux 内核 procfs转载 2022-07-27 16:44:19 · 511 阅读 · 0 评论 -
给buildroot添加自己的软件包,自动安装到rootfs
官网本身有详细教程,这里只是简单说一下。0. 源码 hello.c和Makefile一起放在了~/buildroot-2020.08.1/dl/helloworld 文件夹hello.c#include <stdio.h>int main(){ printf("buildroot helloworld\n"); return 0;}Makefile:OPT = -O2DEBUG = -gOTHER = -Wall -Wno-.转载 2022-01-27 15:22:09 · 2968 阅读 · 0 评论 -
第9章 Linux进程和信号超详细分析
9.1 进程简单说明进程是一个非常复杂的概念,涉及的内容也非常非常多。在这一小节所列出内容,已经是我极度简化后的内容了,应该尽可能都理解下来,我觉得这些理论比如何使用命令来查看状态更重要,而且不明白这些理论,后面查看状态信息时基本上不知道状态对应的是什么意思。但对于非编程人员来说,更多的进程细节也没有必要去深究,当然,多多益善是肯定的。9.1.1 进程和程序的区别程序是二进制文件,是静态存放在磁盘上的,不会占用系统运行资源(cpu/内存)。进程是用户执行程序或者触发程序的结果,可以认转载 2021-11-01 15:53:02 · 492 阅读 · 0 评论 -
linux nc命令传输文件
工作中,由于开发机与线上机器分属不同的机房,需要跳板机进行登录,而跳板机的scp功能貌似受限,导致线上和线下机器传输数据非常麻烦,速度还较慢。得高手指点,nc也可用于文件传输,且不依赖于scp。一、接收端pc命令:ip:192.168.228.222nc -l 1234 > install.log二、发送端pc命令:ip:192.168.228.221nc 192.168.228.222 1234 < install.log三、命令语法想要连接到某处: nc [-o转载 2021-08-10 20:13:35 · 744 阅读 · 0 评论 -
System V 与 POSIX 简介与对比
当我们在 Linux 系统中进行进程间通信时,例如信号量,消息队列,共享内存等方式,会发现有System V以及POSIX两种类型。今天我们就来简单介绍下它们。POSIX:POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。它是在1980 年转载 2021-07-31 23:32:23 · 3960 阅读 · 0 评论 -
CMake --- 生成多个执行文件
需求:执行一次编译生成多个可执行文件。文件夹下有两个main文件:main1.cpp 和 main2.cpp,执行一次编译生成main1.exe和main2.exe。实现:main1.cpp和main2.cpp的内容相同,如下:#include <iostream>using namespace std;int main(int, char**) { std::cout << "Hello, world!\n"; return 1;}..原创 2021-07-18 01:35:09 · 4728 阅读 · 2 评论 -
嵌入式开发 - GDB调试Coredump问题
这里介绍如何用Coredump文件查找崩溃的位置,使用的工具是gdb。另外一种调试Coredump问题的方便的办法,是使用backtrace()等相关函数。1. 生成Debug版本软件包使用选项CMAKE_BUILD_TYPE编译工程生成程序和库。$ cmake -DCMAKE_BUILD_TYPE=Debug .用cpack工具生成软件包mypkg.tar.gz。$ cpack -c CPackConfig.cmake2. 设置Linux生成Corecore..转载 2021-06-03 23:20:32 · 509 阅读 · 0 评论 -
Linux下如何查看系统启动时间和运行时间
https://www.cnblogs.com/xd502djj/archive/2011/05/03/2035599.html原创 2021-05-15 16:50:11 · 136 阅读 · 0 评论 -
curl和wget的区别和使用
curl和wget基础功能有诸多重叠,如下载等。非要说区别的话,curl由于可自定义各种请求参数所以在模拟web请求方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。1.下载文件curl -O http://man.linuxde.net/text.iso #O大写,不用O只是打印内容不会下载wget http://www.linuxde.net/text.iso .转载 2021-05-10 22:57:37 · 136 阅读 · 0 评论 -
Linux生产环境上,最常用的一套“sed“技巧
sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。那些说可以现场google用法的,大多习惯将文本拷贝到excel里,慢慢磨洋工,遇到大批量文件更是手忙脚乱。不是一家人不进一家门,转载 2021-05-03 15:55:11 · 153 阅读 · 0 评论 -
Linux命令学习手册-cpio
cpio [选项] > 文件名或者设备名 cpio [选项] < 文件名或者设备名功能cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以.cpio或者.tar结尾的文件。描述选项说明:详细选项说明参看下表, 包括:选项、含义-o将文件拷贝打包成文件或者将文件输出到设备上。 -i将打包文件解压或者将设备上的备份还原到系统。 -t查看cpio打包的文件内容或者输出到设备上的文件内容。 -v显示打包过程中的文件名称。 -...转载 2021-05-02 17:18:30 · 218 阅读 · 0 评论 -
ffmpeg 将h264码流转成.mp4格式
ffmpeg-fh264-isource.264-vcodeccopyout.mp4原创 2021-03-08 23:10:46 · 6898 阅读 · 0 评论 -
Linux 共享内存
共享内存上:https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html共享内存下:https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html原创 2021-02-28 11:29:47 · 129 阅读 · 0 评论 -
深入剖析mmap 从三个问题说起
概述对于mmap,您是否能从原理上解析以下三个问题:mmap比物理内存+swap空间大情况下,是否有问题? MAP_SHARED,MAP_PRIVATE,MAP_ANONYMOUS,MAP_NORESERVE到底有什么区别? 常听说mmap的读写比传统的系统调用(read, write)快,但真的是这样子吗?原因是什么?要解决这些疑问,可能还需要在操作系统层面多了解。本文将尝试通过这些问题深入剖析,希望通过这篇文章,能使大家对mmap有较深入的认识,也能在存储引擎的设计中,有所参考。背景转载 2021-02-28 00:38:36 · 1069 阅读 · 0 评论 -
Linux 虚拟内存和物理内存的理解
关于Linux 虚拟内存和物理内存的理解。首先,让我们看下虚拟内存:第一层理解1.每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构2.一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分配情况,哪些地址有数据,哪些地址无数据,哪些可读,哪些可写,都可以通过这个链表记录3.每个进程已经分配的内存空间,都...转载 2021-02-21 13:24:18 · 330 阅读 · 0 评论 -
理解 Linux 的虚拟内存
前言前不久组内又有一次我比较期待的分享:”Linux 的虚拟内存”。是某天晚上加班时,我们讨论虚拟内存的概念时,leader 发现几位同事对虚拟内存认识不清后,特意给这位同学挑选的主题(笑)。我之前了解一些操作系统的概念,主要是毕业后对自己大学四年的荒废比较懊恼,觉得自己有些对不起计算机专业出身,于是在工作之余抽出时间看了哈工大在网易云课堂的操作系统公开课,自己也读了一本讲操作系统比较浅的书 《Linux内核设计与实现》,而且去年自己用 C 写简单的服务器时,也追根究底了解了更多的系统底层知识。多亏转载 2021-02-21 13:21:27 · 142 阅读 · 0 评论 -
ubus
一、 介绍ubus提供了一种多进程通信的机制。存在一个守护进程ubusd,所以进程都注册到ubusd,ubusd进行消息的接收、分发管理。ubus依赖于ubox ubus启动后会在后台运行ubusd进程,该进程监听一个unix套接字用于与其他应用程序通信。其他应用程序可基于libubox提供的接口(或自己实现)与其通信。 ubus是为发送消息而设计的,不合适传输大量数据。ubusd二、三种实现方式:1. invoke的方式实现端对端通信server端:ubu..转载 2021-02-17 11:25:04 · 1561 阅读 · 0 评论 -
linux中gdb的可视化调试
今天get到一个在linux下gdb调试程序的技巧和大家分享一下!平时我们利用gcc进行编程,进行程序调试时,观察程序的跳转等不是这么直观。都是入下的界面! 但是如果我们在编译连接时上加了-g命令生成的可执行文件,用gdb -tui -q p2psrv(要debug的命令),就可以进入一个类似的可视化的调试界面。 之后相信一些基本的gdb操作大家都应该清楚。backtrace:查看各级函数调用及参数finish:连续运行到当前函数返回为止,然后停下来等待命令frame(或f)转载 2021-02-16 23:13:57 · 727 阅读 · 0 评论 -
shell脚本批量替换文本中的字符串
#!/bin/bashsed -i "s/return/SAMPLE_PRT(\"\");\n\treturn/g" `grep return -rl ./hisi/hisi.c`将hisi/hisi.c 文件中的return 替换成SAMPLE_PRT(""); return原创 2021-02-09 16:26:38 · 1020 阅读 · 0 评论 -
linux gcc 编译的so文件 运行时无法找到 错误:cannot open shared object file: No such file or directory
对自己打包的so文件进行测试,编译不报错 但是运行时 出现错误:cannot open shared object file: No such file or directory但是so文件明明已经放在当前目录下了折腾一下午,发现这是linux下so库经常会出现的错误,测试程序的可执行文件名字为start, 用ldd start可以发现程序寻找每个so的路径基本为系统路径,lib或者usr/lib等。而当前目录并不在查找范围内,因此显示无法找到解决方法:执行exportLD..转载 2021-02-08 17:17:47 · 719 阅读 · 0 评论 -
WSL中使用adb
WSL中无法连接adb的问题Linux 和 windows 中的 adb 版本不匹配导致的我的Linux adb版本是 1.0.39Windwos的adb 版本是 1.0.40Linux版本的adb 不太好选择版本,我的解决方法是将WINDOWS的adb版本改成1.0.39windows版本adb 的下载地址如果在Linux中不小心执行了 adb kill-server, 这个时候在wsl 中是执行adb start-serer 是没用的, 需要在windows 端 执行一下adb she转载 2021-02-08 11:25:38 · 1264 阅读 · 0 评论 -
编译程序加不加 -lpthread 的区别
最近在CSDN上看到一个帖子在讨论进程间共享的Posix mutex的锁定状态能否被子进程继承?,其中4楼的帖子给出了一个测试局部mutex能否被继承的例子:#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(void){ pid_t pid; pthread_mutex_t mut; pthrea.转载 2021-02-08 10:07:51 · 923 阅读 · 0 评论 -
linux ARM设备树
1. 设备树(Device Tree)基本概念及作用在内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data绝大多数纯属垃圾冗余代码。为了解决这一问题,ARM内核版本3.x之后引入了原先在Power PC等其他体系架构已经使用的Flattened Device Tree转载 2021-01-31 13:23:49 · 465 阅读 · 0 评论 -
cmake:target_** 中的 PUBLIC,PRIVATE,INTERFACE
1. 指令说明target_include_directories():指定目标包含的头文件路径。官方文档target_link_libraries():指定目标链接的库。官方文档target_compile_options():指定目标的编译选项。官方文档目标由add_library()或add_executable()生成。这三个指令类似,这里以target_include_directories()为例进行讲解。2. 指令讲解测试工程目录结构:cmake...转载 2021-01-31 09:19:01 · 438 阅读 · 0 评论 -
Linux操作系统学习_用户态与内核态之切换过程
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录、页表等,这些操作显然不能随便让任何程序都可以做,于是就产生了特权级别的概念,与系统相关的一些特别关键性的操作必须由高级别的程序来完成,这样可以做到集中管理,减少有限资源的访问和使用冲突。Intel的X86架构的CPU提供了0到3四个特权级,而在我们Linux操作系统中则主要采用了0和3两个特权级,也就是我们通常所说的内核态和用户态。 运行...转载 2021-01-30 15:56:56 · 562 阅读 · 0 评论 -
link_directories, LINK_LIBRARIES, target_link_libraries使用总结
总结一下include_directories,link_directories,link_libraries和target_link_libraries的作用。尤其是后面三个参数,比较相似,容易弄混。INCLUDE_DIRECTORIES(添加头文件目录)它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用(这里特指c++。c和Java中用法类似)。比如:include_directories("/opt/MATLAB/R2012a/e转载 2021-01-30 09:58:25 · 3609 阅读 · 0 评论 -
Linux的nm查看动态和静态库中的符号
功能列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。使用nm [option(s)] [file(s)]有用的options:-A 在每个符号信息的前面打印所在对象文件名称; -C 输出demangle过了的符号名称; -D 打印动态符号; -l 使用对象文件中的调试信息打印出所在源文件及行号; -n 按照地址/符号值来排序; -u 打印出那些未定义的符号;常见的符号类型:A 该符号的值在今后.转载 2021-01-29 00:22:42 · 144 阅读 · 0 评论 -
Linux下source命令详解
source命令用法#source FileNamesource命令作用#在当前bash环境下读取并执行FileName中的命令。*注:该命令通常用命令“.”来替代。使用范例:source filename # 中间有空格. filenamesource命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。source(或点)命令通常用于重新执行刚修改的初始化文..转载 2021-01-29 00:11:04 · 509 阅读 · 0 评论 -
ubuntu下安装与使用json-c
Ubuntu 16.04 LTS 安装json-cjson-c适用于开发人员使用c语言对json的编程。安装json-c1.通过git安装,,json-c的github官网:https://github.com/json-c/json-c官网有详细的安装教程,这里我挑出ubuntu的安装例子。若之前你的ubuntu系统没有安装git工具,请先执行下面的命令,安装git工具。sudo apt install gitsudo apt install autoconf.转载 2021-01-19 22:57:54 · 4291 阅读 · 3 评论 -
mmap和shm共享内存的区别和联系
共享内存的创建一、区别1. 共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存可以通过mmap()映射普通文件(特殊情况下还可以采用匿名映射)机制实现,也可以通过系统V共享内存机制实现。应用接口和原理很简单,内部机制复杂。为了实现更安全通信,往往还与信号灯等同步机制共同使用。mmap的机制如:就是在磁盘上建立一个文件,每个进程存储器里面,单独开辟一个空间来进行映射。如果多进程的话,那么不会对实际的物理存储器(主存)消耗太大。sh.转载 2021-01-19 19:37:51 · 460 阅读 · 0 评论 -
Linux进程间通信之共享内存
转自 adorable_共享内存 共享内存是Lunix系统中最底层的通信机制,也是最快的通信机制。共享内存通过两个或多个进程共享同一块内存区域来实现进程间的通信,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。通常是由一个进程创建一块共享内存区域,然后多个进程可以对其进行访问,一个进程将要传出的数据存放到共享内存中,另一个或多个进程则直接从共享内存中读取数据。因此这种通信方式是最高效的进程间通信方式。但实际的问题在于,当两个或多个进程使用共享内存进行通信时,同步问.转载 2021-01-19 17:59:34 · 193 阅读 · 0 评论 -
LInux挂载NFS网络文件系统
1.NFS主机安装NFS服务sudo apt install nfs-kernel-server2.客户机安装NFS客户程序sudo apt install nfs-common -y3.设置挂载目录 假如是/home/hongzhao1/Desktop主机端设置权限sudo vim /etc/exports添加:/home/hongzhao1/Desktop *(insecure,rw,async,no_root_squash)4.客户端添加NFS目录.原创 2021-01-17 23:46:34 · 208 阅读 · 0 评论