Linux
文章平均质量分 71
ChingDawn
这个作者很懒,什么都没留下…
展开
-
利用Makfile给多文件、多目录C源码建立工程
转自:利用Makfile给多文件、多目录C源码建立工程 (qq.com)0. 前言粉丝留言,想知道如何使用Makefile给多个文件和多级目录建立一个工程,必须安排!关于Makefile的入门参考文章,可以先看这篇文章:《Makefile入门教程》为了让大家有个更加直观的感受,一口君将之前写的一个小项目,本篇在该项目基础上进行修改。该项目详细设计和代码,见下文:《从0写一个《电话号码管理系统》的C入门项目【适合初学者】》一、文件好了,开始吧!我们将该项目的所有功能函数转载 2021-10-19 14:03:22 · 131 阅读 · 0 评论 -
Linux Kernel代码艺术——系统调用宏定义
转自:Linux Kernel代码艺术——系统调用宏定义 - hazir - 博客园 (cnblogs.com)转载 2021-09-26 09:50:27 · 445 阅读 · 0 评论 -
用图文带你彻底弄懂 GDB 调试原理
转自:用图文带你彻底弄懂 GDB 调试原理 (qq.com)一、前言这篇文章来聊聊大名鼎鼎的GDB,它的豪门背景咱就不提了,和它的兄弟GCC一样是含着金钥匙出生的,在GNU的家族中的地位不可撼动。相信每位嵌入式开发工程师都使用过gdb来调试程序,如果你说没有用过,那只能说明你的开发经历还不够坎坷,还需要继续被 BUG吊打。我们都知道,在使用gcc编译时,可以使用-g选项在可执行文件中嵌入更多的调试信息,那么具体嵌入了哪些调试信息?这些调试信息是如何与二进制的指令之间进行相互交互...转载 2021-09-14 18:18:18 · 529 阅读 · 0 评论 -
结构体sizeof不想字节对齐
转自:(66条消息) 结构体sizeof不想字节对齐_lyw736632087的博客-CSDN博客问题描述:笔者在做一个项目:硬件要访问内存中按照Spec格式定义的一段数据包。在C语言中一般使用结构体初始化这个数据包,因为可以方便配置各个字段。但结构体默认需要字节对齐的(sizeof和实际大小不同),因此和内存真实的存放方式可能不同。解决方法:让结构体按1字节对齐,例如: struct test{ char ch; int size; char str[10]; }__a...转载 2021-08-26 16:03:14 · 604 阅读 · 0 评论 -
C/C++ sizeof函数解析——解决sizeof求结构体大小的问题
转自:C/C++ sizeof函数解析——解决sizeof求结构体大小的问题 - WhyWin - 博客园 (cnblogs.com)C/C++中不同数据类型所占用的内存大小32位64位char11int4大多数4,少数8short2...转载 2021-08-26 15:48:23 · 1557 阅读 · 0 评论 -
VMware虚拟机(Ubuntu)添加物理串口
转自:(65条消息) VMware虚拟机(Ubuntu)添加物理串口_unbroken-CSDN博客1.关闭虚拟机,添加串口设备然后进行如下设置2.设置中添加物理串口,将创建的虚拟串口COM1映射到虚拟机上3.在虚拟机中(ubuntu14.04)使用minicom和外接开发板通信。注意打开的串口如果是COM1,一般虚拟机对应的为ttyS1.如果不对,一个个试验修改ttyS(0-31)# sudo minicom -s //设置4.退出...转载 2021-08-19 10:07:43 · 2429 阅读 · 0 评论 -
C++ 虚函数和纯虚函数的区别
转自:C++ 虚函数和纯虚函数的区别 | 菜鸟教程 (runoob.com)首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义它为虚函数是为了 允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了 实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:class A{public: virtual void foo() { .转载 2021-08-18 16:33:41 · 184 阅读 · 0 评论 -
析构函数
/* * deleteFunc.cpp * * Created on: 2016年8月17日 * Author: zroad */#include<string>#include<iostream>using namespace std;bool being = true;class Fruit {public: void print() { cout << color << " " <.转载 2021-08-18 15:20:20 · 64 阅读 · 0 评论 -
error: template with C linkage
转自:(65条消息) error: template with C linkage_jiong_1988的专栏-CSDN博客当编译C/C++混用的项目时,可能会遇到这个问题。1.某个头文件中extern “C”的使用存在问题,如果包含这个有问题的头文件之后,又包含<map>,<vector>等就会出现这个问题。 1). 需要检查extern "C"后面为一个函数extern "C" int get_value(void); 2). extern "...转载 2021-08-18 11:01:43 · 1544 阅读 · 0 评论 -
深入理解 Linux 的 epoll 机制
转自:深入理解 Linux 的 epoll 机制 (qq.com)在 Linux 系统之中有一个核心武器:epoll 池,在高并发的,高吞吐的 IO 系统中常常见到 epoll 的身影。IO 多路复用在 Go 里最核心的是 Goroutine ,也就是所谓的协程,协程最妙的一个实现就是异步的代码长的跟同步代码一样。比如在 Go 中,网络 IO 的read,write看似都是同步代码,其实底下都是异步调用,一般流程是:write ( /* IO 参数 */ ) 请求入..转载 2021-07-26 10:48:01 · 389 阅读 · 0 评论 -
C++11使用using定义别名(替代typedef)
转自:http://c.biancheng.net/view/3730.html大家都知道,在 C++ 中可以通过 typedef 重定义一个类型:typedef unsigned int uint_t;被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。因此,下面这样将不是合法的函数重载:void func(unsigned int);void func(uint_t); // error: redefinition使用 typedef 重定义类型是很方便的,但它也有一转载 2021-07-20 13:36:13 · 256 阅读 · 0 评论 -
C++使用kill发送信号终止目标进程
转自:https://blog.csdn.net/chengqiuming/article/details/88933756一 点睛#include<sys/types.h>#include<signal.h>int kill(pid_t pid,int sig);函数说明kill()可以用来送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况:pid>0 将信号传给进程识别码为pid的进程。pid=0 将信号传给和目前进程相同进程组的所有进转载 2021-07-20 11:10:20 · 1569 阅读 · 0 评论 -
boost::asio::io_context的事件循环
转自: https://www.jianshu.com/p/d6ae8adb5914简介boost::asio::io_context看字面意思是io的上下文, 可以理解为, boost的任何io都会涉及到一个io_context, 同步io会隐式地启动一个io_context, 而异步io需要我们指定一个, 然后在合适的时机调用io_context::run()函数, 之后会进入io事件循环, 如果io完成会调用回调函数, 保证实现有关的功能. 根据官方文档, 在已经启动io_context::run转载 2021-07-20 09:40:15 · 1774 阅读 · 0 评论 -
bad_weak_ptr的原因
转自:https://blog.csdn.net/yockie/article/details/40213331前几天解了一个bug,表象是调用shared_from_this的时候就跑出bad_weak_ptr异常,类A明明是继承自boost::enable_shared_from_this<A>的,一时搞不明白为什么,后来搜了下出现“bad_weak_ptr异常”可能的原因才找到问题所在:创建类A的对象的时候没有用智能指针包裹,而是直接new的裸指针。【引申】enable_from_t转载 2021-06-25 10:03:46 · 1213 阅读 · 0 评论 -
设备树1-设备树文件.DTS文件格式
转自:https://www.cnblogs.com/Mike2019/p/12191769.html将描述板级硬件信息的内容从Linux分离出来,用一个专属的文件来描述,这个专属文件叫做设备树,文件扩展名.dts。而一个SOC可以做出很多不同的板子,这些板子都有共同的信息,将这些共同的信息提取出来作为一个通用的文件,其他.dts文件直接引用这个通用文件即可,这个通用文件就是.dtsi文件。1、存放路径使用设备树之前ARM架构的板级信息存放在:/arch/arm/mach-xxx/arch/ar转载 2021-06-04 14:34:18 · 453 阅读 · 0 评论 -
pthread 线程立即取消的两种方法
转自:https://blog.csdn.net/vertor11/article/details/54943923相关函数介绍int pthread_cancel(pthread_t thread)发送终止信号给thread线程,如果成功则返回0,否则为非0值。发送成功并不意味着thread会终止。int pthread_setcancelstate(int state, int *oldstate)设置本线程对Cancel信号的反应,state有两种值:PTHREAD_CANC转载 2021-05-27 10:21:32 · 882 阅读 · 0 评论 -
Expect工具的安装及使用方法
转自:https://blog.csdn.net/wangtaoking1/article/details/78268574Expect是一个用来处理交互的工具,通常用于需要手动输入数据的场景,可在脚本中使用expect来实现自动化。安装首先查看系统中是否有安装expect。# whereis expectExpect工具是依赖tcl的,所以也需要安装tcl。首先下载并安装tcl,这里安装8.4.19版本。# wget https://sourceforge.net/projects/tcl转载 2021-05-27 08:41:15 · 755 阅读 · 0 评论 -
shell报错:/bin/sh^M: bad interpreter: No such file or directory
转自:https://blog.csdn.net/xudailong_blog/article/details/82891506在windows环境下写了个shell脚本,然后在linux下运行的时候,发现并不能正常运行,而且是已经在使用命令 chmod 777 xxx.sh了,so,经过搜索,是shell脚本格式出了错误。测试shell#!/bin/shecho "test shell"运行,报错[root@localhost test]# ./test.sh -bash: ./te转载 2021-05-24 09:54:02 · 930 阅读 · 0 评论 -
解决程序运行问题“libreadline.so.6: cannot open shared object file: No such file or directory”
转自:https://blog.csdn.net/yehe111/article/details/1074602781、问题描述:error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory原因分析:系统已安装libreadline.so.7,libreadline.so.6的版本已过时,将版本7做软连接为版本6即可解决问题!解决方转载 2021-04-10 10:31:39 · 6104 阅读 · 1 评论 -
Ubuntu18.04 iPerf3 安装
Ubuntu18.04 iPerf3 安装1、下载iPerf3源码:git clone https://github.com/esnet/iperf.git2、安装步骤2.1、cd iperf2.2、sudo ./configure2.3、sudo make2.4、sudo make install3、查看安装是否成功iperf3 –viperf 3.9 (cJSON 1.7.13) Linux ubuntu 5.4.0-52-generic#57~18.04.1-Ubuntu SM原创 2021-04-09 17:16:38 · 3000 阅读 · 0 评论 -
图解 | 你管这破玩意叫文件系统?
转自:https://mp.weixin.qq.com/s/2NQyDpSQ6E-OPYyaM4UqPQ你手里有一块硬盘,大小为 1T。你还有一堆文件:这些文件在硬盘看来,就是一堆二进制数据而已。你准备把这些文件存储在硬盘上,并在需要的时候读取出来。要设计怎样的软件,才能更方便地在硬盘中读写这些文件呢?首先我不想和复杂的扇区,设备驱动等细节打交道,因此我先实现了一个简单的功能,将硬盘按逻辑分成一个个的块,并可以以块为单位进行读写。每个块就定义为两个物理扇区的大小,即 1024 字节,就转载 2021-03-11 14:32:12 · 157 阅读 · 0 评论 -
Makefile 高亮显示Error、Warning等错误以及警告信息
转自:https://blog.csdn.net/chenshi2021/article/details/100714412/经常性用 Makefile 编译程序,但是出错后清一色的编译输出信息让人查找错误点时一阵头大!还好GitHub上有 color_cpmpile 项目,真是造福啊!感谢此项目的原作者!GitHub上的项目地址 https://github.com/chinaran/color-compile或者在这里下载源代码:http://pan.baidu.com/s/1kUTFtQ31转载 2021-02-21 17:25:05 · 2319 阅读 · 0 评论 -
浅谈 Linux 内核开发之 PCI 设备驱动
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-pci/index.html#1.PCI%20%E4%BB%8B%E7%BB%8D|outlinePCI 介绍随着计算机应用的不断更新和发展(比如百兆网卡、视屏流等),计算机内数据传输的带宽要求越来越高,传统内部总线带宽已经远远不能满足这些应用的需要,因此人们推出了 PCI 总线标准PCI 是 Peripheral Component Interconnect 的缩写,它因为高性能、低成本以及良好的转载 2021-01-15 18:14:02 · 796 阅读 · 0 评论 -
windows10中安装ubuntu双系统时出现unable to find a medium containing a live file system解决办法
转自:https://blog.csdn.net/weixin_44621121/article/details/866496211、在ubuntu官网上下载最新的18.04.1LTS版本2、通过rufus软件将其写入U盘中3、但在电脑安装时出现如下错误(原文链接)解决办法:只需在安装进行到如下界面时,拔掉U盘再插上即可解决问题!...转载 2021-01-12 09:46:57 · 1686 阅读 · 0 评论 -
进入Linux系统命令行提示符美化(PS变量修改)
转自:https://www.icode9.com/content-3-641305.htmlexport PS1='$? [\u@\h] \w \$ '命令提示符PS1(大写ps加数字1)变量内容:PS1=’[\u@\h \W]$ '(系统默认格式)\d :可显示出『星期 月 日』的日期格式,如:“Mon Feb 2”\H :完整的主机名。\h :仅取主机名在第一个小数点之前的名字\t :显示时间,为 24 小时格式的『HH:MM:SS』\T :显示时间,为 12 小时格式的『HH:MM转载 2020-12-17 16:17:40 · 497 阅读 · 0 评论 -
C 库函数 - ftell()
转自:https://www.runoob.com/cprogramming/c-function-ftell.htmlC 标准库 - <stdio.h>描述C 库函数 long int ftell(FILE *stream) 返回给定流 stream 的当前文件位置。声明下面是 ftell() 函数的声明。long int ftell(FILE *stream)参数stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。返回值该函数返回位置标识符的当转载 2020-12-16 15:29:17 · 235 阅读 · 0 评论 -
linux 之assert学习
转自:https://www.cnblogs.com/jackluolei/p/8858787.htmlassert是常用于程序调试的一个宏函数,在程序运行时,计算assert()括号里面的表达式,如果为false则报错,并且终止程序的运行,相反继续运行。简而言之:assert()函数的功能是终止程序以免导致更加严重的错误,同时也用于查找错误。使用assert()函数的情况:1.在函数开始时检验传入参数的合法性。2.一个assert()函数一次只能检测一个条件的合法性。3.因assert()只在转载 2020-12-16 14:31:16 · 232 阅读 · 1 评论 -
sync命令
转自:https://www.cnblogs.com/anArtist/articles/5247542.html使用方式 : sync使用说明 :Linux 系统中欲写入硬盘的资料有的时候会了效率起见,会写到 filesystem buffer 中,这个 buffer是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于buffer 中的资料强制写入硬盘中另:个人理解,还有一种情况是,如果正在把buffer的数据写入硬盘转载 2020-12-10 13:13:53 · 797 阅读 · 0 评论 -
VMware压缩linux虚拟机
转自:https://blog.csdn.net/beidiqiuren/article/details/52933023虚拟机在使用一段时间后,体积会变得很大。即使删除掉里面的不用的文件,也不能自动减小体积。可以使用vmware自带的虚拟机工具进行减容。打开虚拟机,使用root用户,在命令行输入vmware-toolbox-cmd disk shrink /出现disk shrinking complete即代表压缩完成。关闭虚拟机在vmware界面单机编辑虚拟机设置选择硬盘转载 2020-12-07 14:25:04 · 507 阅读 · 0 评论 -
ubuntu18.04 python2和python3 切换
查看目前python版本python --versionPython 2.7.17查看本系统中,python都有哪些版本update-alternatives --list python/etc/alternatives/python/opt/python37/bin/python3/opt/python37/bin/python3.7/usr/bin/python2.7/usr/bin/python3/usr/bin/python3.6我的机器里显示如上所示。如果设置ubunt原创 2020-11-27 10:43:33 · 696 阅读 · 0 评论 -
linux 的 rm 命令 删除除了某个文件之外的所有文件
rm -rf !(target_file)原创 2020-11-25 14:08:42 · 3065 阅读 · 0 评论 -
shFlags简介
转自:https://www.cnblogs.com/zqb-all/p/5325232.html看到有脚本中使用了shFlags,于是google了一下,发现还是个挺方便的东西。https://github.com/kward/shflags/wiki/Documentation12xshaflags有助于在脚本中简单地处理命令行的参数。如下例子#!/bin/sh# source shflags. /path/to/shflags# define a 'name' command-li转载 2020-11-24 13:29:29 · 519 阅读 · 0 评论 -
Ubuntu18.04 上源码方式安装 perl-5.14.2
下载源码wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz解压tar xvzf perl-5.14.2.tar.gz进入解压之后的源码目录cd perl-5.14.2/配置./Configure -des编译make测试make test提示以下信息,不用理会,继续执行后面的安装步骤Failed 1 test out of 1964, 99.95% okay. ../cpan/Time-Local/t/Local.t原创 2020-11-24 09:42:26 · 1893 阅读 · 2 评论 -
sunxi:[0]全志SoC启动过程分析
转自:https://www.jianshu.com/p/4f11b55bac13sunxi学习:[0]全志SoC启动过程分析参考:linux-sunxi.org启动流程:Boot ROM→SPL→U-boot(→Kernel→RootFileSystem)一、BROM阶段全志SoC有一个非常具体的启动过程。首先,它执行一个微小的片上 Boot ROM(BROM),然后检查按钮的FEL模式,然后开始检查各种存储选项的有效的引导签名在正确的位置。上电后,SoC开始从BROM所在的地址0xfff转载 2020-11-18 10:44:35 · 1899 阅读 · 0 评论 -
你不好奇 CPU 是如何执行任务的?
转自:https://mp.weixin.qq.com/s/C1Zv15Eb4SZc5wvwb-LI2w前言你清楚下面这几个问题吗?有了内存,为什么还需要 CPU Cache?CPU 是怎么读写数据的?如何让 CPU 能读取数据更快一些?CPU 伪共享是如何发生的?又该如何避免?CPU 是如何调度任务的?如果你的任务对响应要求很高,你希望它总是能被先调度,这该怎么办?…这篇,我们就来回答这些问题。正文CPU 如何读写数据的?先来认识 CPU 的架构,只有理解了 CPU 的 架构转载 2020-11-13 15:28:13 · 236 阅读 · 0 评论 -
Shell重定向&>file、2>&1、1>&2的区别
转自:https://blog.csdn.net/cugyangchao/article/details/6821162?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.cha转载 2020-11-11 13:09:06 · 288 阅读 · 0 评论 -
linux下如何获得特定字符串前后几行文本
转自:https://blog.csdn.net/zhaolixin0726/article/details/53123453如果要获得一个文件中的最后几行,使用tail命令就可以很方便的实现。但在有些时候,会需要用到如标题中所描述的功能。我举一个具体的例子:在打印日志堆栈信息时,就是在字符串“exception” 之后的几行,但这整个部分是在文件的中间,如果将这部分数据提取出来呢?使用grep命令可以比较轻松达到目的,具体使用如下:$ grep -A|B n "key" file其中:A:表转载 2020-11-11 10:43:48 · 1747 阅读 · 0 评论 -
valgrind简介与使用
转自:https://blog.csdn.net/caijiwyj/article/details/99188644一、valgrind简介Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具。Valgrind 是运行在Linux 上的多用途代码剖析和内存调试软件。主要包括Memcheck、Callgrind、Cachegrind 等工具,每个工具都能完成一项任务调试、检测或分析。可以检测内存泄露、线程违例和Cache 的使用等。Valgrind 基于仿真方式对程序转载 2020-11-10 10:42:40 · 776 阅读 · 0 评论 -
Shell编程进阶篇(完结)
1.1 for循环语句在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或是循环变数。这使得for循环能够知道在迭代过程中的执行顺序。1.1.1 shell中的for循环shell中的for 循环与在c中不同,它包含三种形式:第一种结构是列表for 循环;第二种结构就是不带列表的for循环;第三种就类似于C语言。① 列表for循环(常用)#!/bin/bashfor i转载 2020-11-09 15:26:36 · 1015 阅读 · 0 评论 -
全志平台编译和打包系统(2)打包系统
转自:https://www.ebaina.com/articles/140000004575?utm_source=searchindex&utm_medium=list&utm_campaign=1400000045751.前言打包的好处:其他平台是将kernel/uboot/rootfs编译好后直接分开烧写到flash中,分开的话必然需要用户在烧写的时候,指定烧写的bin文件。把这些整合到一个固件文件中的话,在烧写这些到flash的时候会自动去固件里面搜寻需要的内容,这样对用户更转载 2020-11-06 15:37:18 · 3458 阅读 · 0 评论