
linux
文章平均质量分 53
爱就是恒久忍耐
纸上谈来终觉浅,绝知此事要躬行
展开
-
Linux下64位GCC编译生成32位程序
Linux下64位GCC编译生成32位程序原创 2024-11-06 09:11:26 · 896 阅读 · 0 评论 -
SocketCAN使用一个socket处理多路CAN总线
使用一个socket处理多个CAN总线原创 2022-04-10 12:13:20 · 7722 阅读 · 18 评论 -
Linux下C语言计算时间差
Linux下C语言计算时间差原创 2021-09-22 22:04:07 · 2330 阅读 · 1 评论 -
Linux下获取线程id的靠谱方法
Linux下获取线程id的靠谱方法原创 2021-08-04 10:55:43 · 1707 阅读 · 0 评论 -
Linux下CGDB使用教程
cgdb使用教程原创 2021-03-26 11:54:32 · 5917 阅读 · 1 评论 -
error: ‘CLOCK_MONOTONIC’ undeclared问题解决
找不到CLOCK_MONOTONIC的问题原创 2021-03-26 10:36:11 · 7223 阅读 · 1 评论 -
Git回退指令
git回退操作对应的指令原创 2021-01-14 18:16:37 · 557 阅读 · 0 评论 -
Debian10简易安装
本人最开始一直是使用Ubuntu,但是使用过程中发现Ubuntu虽然提供了很优秀的交互性,但是牺牲了一定的稳定性,经常会出现一些错误。现在转投Debian,不得不说,这个发行版非常稳定,而且Ubuntu也是基于Debian,终端操作基本相同,易于上手,唯一缺点是界面相对简单。寻址镜像首选需要找到Debian10的镜像,一开始网上一搜,很多都是3个3.99G的DVD镜像,直接劝退了。后来在网上看到一个安装教程,才发现是打开方式不对。点击https://www.debian.org/打开debian网原创 2020-12-08 22:16:03 · 994 阅读 · 0 评论 -
Linux下Segmentation Fault的定位方法
本文主要讲述Linux下运行程序时发生Segmentation Fault的定位方法。一 准备工作首先需要做点准备工作,安装gcc和gdb打开终端,然后输入以下命令开启ulimit ulimit -c unlimited # 打开ulimit ulimit -c # 如果打开成功会返回unlimitedPS:以上开启ulimit的操作只会在当前终端下有效二 示例一个简单C程序如下,#include <stdio.h>int main(void){ int *原创 2020-12-08 21:21:08 · 5101 阅读 · 0 评论 -
Debian下开启open in terminal
在Debian mate环境下,使用以下命令进行安装,然后重启,sudo apt install caja-open-terminal右键就可以看到“open in terminal”原创 2020-11-28 19:22:04 · 1019 阅读 · 0 评论 -
Linux下libevent的简单使用
libevent是个高效的异步事件通知库,本文主要讲述在Linux下如何简单使用该库。一 下载本文写作时使用的版本是2.1.11,下载地址是https://github.com/libevent/libevent/releases/tag/release-2.1.11-stable本人下载的是zip文件。二 编译把第一步下载的压缩文件放到linux下。先解压,然后按照github上给的教程,在源码根目录下新建build目录,并cd进入,最后执行下面的2个命令进行编译(需要事先安装cmake原创 2020-07-01 22:53:57 · 1343 阅读 · 1 评论 -
Linux下计时函数clock_gettime()的时钟选择
Linux下计时函数有很多种,精度比较高的是clock_gettime(),其函数原型如下,#include <time.h>int clock_gettime(clockid_t clk_id, struct timespec *tp);struct timespec的定义如下,struct timespec { time_t tv_sec; /*...原创 2020-03-14 22:06:10 · 4739 阅读 · 2 评论 -
Linux下使用epoll监听定时器
本文主要讲述如何使用epoll来监听timerfd系列函数创建的定时器,关于timerfd系列函数的使用请看这篇文章。一 epoll使用简介epoll是event poll的缩写,用于I/O事件通知,可以监听多个文件描述符。其相关api有以下三个:epoll_create()或epoll_create1():创建一个epoll对象,并返回一个文件描述符指向这个epoll对象epoll_...原创 2020-01-18 21:21:53 · 2519 阅读 · 0 评论 -
Linux下操作共享内存的POSIX方法
共享内存(share memory)是进程间通信的一种方法,具体实现有2种:systemV和POSIX,本文主要介绍POSIX方法。一 创建共享内存创建新的共享内存主要分三步:使用shm_open()创建共享内存对象使用ftruncate()设置共享内存的大小使用mmap()把共享内存映射到进程的虚拟地址空间里经过上述三步,进程就可以读写共享内存了二 操作已存在的共享内存假...原创 2020-01-09 21:17:11 · 861 阅读 · 0 评论 -
Linux下定时函数timerfd_xxx()的使用
Linux系统提供了timerfd系列的定时函数,其具体函数名如下,#include <sys/timerfd.h>int timerfd_create(int clockid, int flags);int timerfd_settime(int fd, int flags, const struct itimerspec *new_...原创 2019-12-27 22:38:08 · 3357 阅读 · 5 评论 -
Linux下计时函数gettimeofday()的使用
Linux下可以使用gettimeofday()来查看当前时间,这个函数会计算从1970年1月1号00:00(UTC)到当前的时间跨度。其函数原型如下,#include <sys/time.h>// 调用成功返回0,失败返回-1int gettimeofday(struct timeval *tv, struct timezone *tz);该函数所算出的时间跨度会存放在第...原创 2019-12-23 21:55:41 · 19368 阅读 · 4 评论 -
Linux下C/C++给文件加锁
本文主要讲述Linux下如何在C/C++程序中给文件加锁,防止多个进程并发读写同一个文件导致文件内容不一致,使用fcntl()函数,这是一个POSIX函数。一 为何需要文件锁假设有一个菜谱文件,其内容是今天需要买的菜,现在有2个进程A和B,要去访问这个文件,它们的操作如下,A读取了这个文件内容B读取了这个文件内容A对读出的内容做了一些修改,添加了番茄,然后写回文件里B也对读出的内容...原创 2019-12-21 23:14:16 · 7697 阅读 · 0 评论 -
学习open62541 --- [7] Server添加对象和对象类型
上一节里,我们在OPC UA Server端添加了一个变量,本节主要讲述如何给变量添加回调函数。原创 2019-10-19 21:50:47 · 8497 阅读 · 60 评论 -
使用openssl生成自签名证书
本文主要讲述如何使用openssl生成安全证书,操作环境:Ubuntu16.04,生成一个2048位的私匙文件 — rsa_private_key.pemopenssl genrsa -out rsa_private_key.pem 2048从私匙里提取公匙文件 — rsa_public_key.pemopenssl rsa -in rsa_private_key.pem -out rs...原创 2019-10-19 11:15:03 · 1225 阅读 · 0 评论 -
Linux内核数据结构 --- 双向循环链表
XX原创 2018-11-25 13:07:22 · 954 阅读 · 3 评论 -
vim+cscope打造源码阅读环境
在linux虚拟机下做嵌入式开发时,可以使用vim+cscope打造一个类似source insight的源码阅读环境。本文使用ubuntu18.04,下面来看下如何操作,一 安装和配置vim打开终端,输入命令:sudo apt install vim安装好后,配置.vimrc,打开.vimrc命令:vim ~/.vimrc,然后把以下内容输入进去,覆盖原有内容,set wildmenu...原创 2018-12-08 13:39:20 · 916 阅读 · 0 评论 -
linux内核镜像的加载地址和入口地址
uboot引导linux内核镜像(uImage)启动时,会有2个地址加载地址(Load Address),即内核镜像整体要放置的内存空间位置入口地址(Entry Address),即从内核镜像中开始执行的地址示意图如下,其中,内核镜像的加载地址是100,入口地址是180,也就是说内核镜像本身要加载到内存地址为100的地方,然后从地址180开始执行内核代码(一般是_start指示的ta...原创 2018-12-26 21:48:59 · 6204 阅读 · 3 评论 -
Linux下GDB简明教程(包括GUI模式)
我们在linux下调试程序时,一般都会用到gdb,本文主要介绍一下gdb常用的操作以及TUI模式的使用方式。一 常用操作假设我们有段程序叫main.c,代码如下,#include &amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt;typedef struct { char name[8]; int age; int birthYear;} student;int func(int dat原创 2018-12-22 17:35:51 · 6175 阅读 · 1 评论 -
warning: override: reassigning to symbol 问题解决
一 问题在给OrangePI PC配置内核时,出现warning: override: reassigning to symbol的问题(使用的配置文件是官方提供的文件sun8iw7p1_mainline_defconfig)warning字面意思是“覆盖:重新分配给符号XXX”使用的配置命令是make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf...原创 2019-01-16 22:42:33 · 6366 阅读 · 0 评论 -
简单代码判断内存大小端模式
大端模式(Big-Endian)是低地址存放高位字节,小端模式(Little-Endian)是低地址存放低位字节。下面用一段简单的c代码来进行判断。#include <stdio.h>#include <stdint.h>int main(void){ uint32_t data = 0x11223344; uint8_t *buf = (uint8_t ...原创 2019-03-27 21:26:10 · 870 阅读 · 0 评论 -
ubuntu更换软件源(使用ubuntu自带工具操作)
ubuntu安装好后默认的软件源是ubuntu官方的,对于国内的用户来说访问起来会比较慢,所以安装好系统后一般都会去更换成国内软件源,网上很多做法是修改那个软件源的配置文件,其实ubuntu自带设置软件源的工具,不必去修改文件。步骤这里以ubuntu16.04来举例。首先,点击左侧的System Settings在弹出的界面里点击 Software & Updates在弹出的界...原创 2019-08-11 12:49:35 · 2818 阅读 · 0 评论 -
学习open62541 --- [2] 使用UaExpert
UA Expert是OPC UA Client的GUI工具,本文主要学习使用UaExpert原创 2019-08-17 11:16:46 · 29340 阅读 · 17 评论 -
Python3调用C++(使用SWIG)
本文使用的是ubuntu16.04.6,安装python3-dev,swigsudo apt install python3-devsudo apt install swig原创 2019-08-31 13:57:18 · 2802 阅读 · 0 评论 -
Linux下C语言判断文件是否存在
本文仅做记录,直接上example代码,#include <unistd.h>#include <stdio.h>int main(void){ if (access("AA.txt", F_OK) == 0) { printf("AA.txt exists.\n"); } else { pr...原创 2019-09-15 21:29:10 · 8395 阅读 · 0 评论 -
交叉编译Nginx
Nginx是个高性能的http和反向代理服务器,应用非常广泛,使用C语言编写,故可以将其交叉编译,然后放到arm平台上使用,这样Nginx就可以在嵌入式linux里大放光彩。下面就讲述如何交叉编译Nginx。一 准备交叉编译平台:ubuntu16.04 64位目标平台:arm 32位 (对于64位操作方法也是类似)下载以下文件用于交叉编译:gcc-linaro-4.9.4-2017...原创 2019-09-28 00:12:08 · 4682 阅读 · 6 评论 -
Linux目录结构及其意义
本文是翻译TheGeekStuff上的一篇文章,网址:https://www.thegeekstuff.com/2010/09/linux-file-system-structure/Have you wondered why certain programs are located under /bin, or /sbin, or /usr/bin, or /usr/sbin?For exa...翻译 2019-10-05 11:27:54 · 487 阅读 · 0 评论 -
进程和线程的区别 ( LINUX系统 )
一般来说,我们提到进程和线程,第一印象就是线程是进程中原创 2018-11-24 14:58:04 · 999 阅读 · 0 评论