linux应用开发
文章平均质量分 82
项目中的开发经验的沉淀,总结,积累。
特立独行的猫a
csdn技术男猫哥,高级嵌入式软件工程师、c++软件工程师、全栈工程师。专注分享c++、QT、嵌入式linux、Android、HarmonyOS、前端小程序、AIoT(物联网+人工智能)、单片机、通信技术、开发工具等相关内容。
展开
-
Linux和其他类Unix系统的GNU coreutils 知多少
GNU coreutils是GNU项目的一部分,它是一组基本的命令行工具集,用于操作和管理Linux和其他类Unix系统中的文件和数据流。这些工具被广泛用于终端和脚本中,提供了许多常用的功能和实用程序。Linux和其他类Unix系统的GNU coreutils 知多少?了解它有助你熟悉常用的linux命令。原创 2023-08-23 22:15:00 · 1370 阅读 · 0 评论 -
linux的exec和system函数介绍及选择
在应用程序中有时候需要调用第三方的应用,这是常见的需求。此时可以使用linux下的exec命令或system命令达到目的。但是这两个该选择哪个呢?有什么区别?下面总结介绍下。原创 2023-07-28 22:30:00 · 2637 阅读 · 0 评论 -
linux下i2c调试神器i2c-tools安装及使用
在嵌入式linux开发中,有时候需要确认i2c硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools。i2c-tools是一个专门调试i2c的开源工具,可获取挂载的设备及设备地址,还可以读写I2C设备寄存器。调试新的设备驱动时,难免要反复修改寄存器,然后看结果现象。传统的做法是修改驱动代码寄存器值->编译->下载->运行->看结果。这一过程比较费时间,而每次需要改的可能只是 1 个 bit,这种情况下 i2c-tools 简直就原创 2023-07-27 22:15:00 · 6269 阅读 · 1 评论 -
在嵌入式linux上玩OpenGL
在我的嵌入式linux上板子资源和性能还是有限。想玩下OpenGL,倒不是板子flash或内存太小,而是底层图形接口是基于framebuffer的dev/fb0的,在标准的OpenGL下不支持。网上了解到在嵌入式linux或单片机上,可以跑OpenGL的一个子集,叫做TinyGL。OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。原创 2022-09-07 22:40:51 · 4124 阅读 · 0 评论 -
悼念浩哥(左耳朵耗子),一个纯粹的技术人
上周末听闻浩哥的事了,期初还不信。在网上搜索消息,看来是真的。他才四十多岁,觉得非常可惜。很早就关注过浩哥,他是一位正直纯粹和爱分享的技术大牛。无论是技术分享还是人生感悟,或者是成长相关,都让我学到很多东西。曾经受他文章的影响,让我对技术和linux系统产生兴趣。可惜天妒英才,世界上失去了一位优秀的技术人和引路人。在此也分享下浩哥unix方面的文章,希望更多人对linux系统(类unix)感兴趣。原创 2023-05-16 22:10:37 · 840 阅读 · 1 评论 -
linux0.11+Bochs环境搭建和使用
Linux 系统的创始人在一篇新闻组投稿上所说的,要理解一个软件系统的真正运行机制,一定 要阅读其源代码(RTFSC – Read The Fucking Source Code)。系统本身是一个完整的整体,具有很多看似 不重要的细节存在,但是若忽略这些细节,就会对整个系统的理解带来困难,并且不能真正了解一个实 际系统的实现方法和手段。原创 2022-12-31 01:15:00 · 2077 阅读 · 0 评论 -
linux常用操作命令总结
总结下常用的linux命令,linux下的命令组合着实强大。有时候即便是使用的windows系统也可以在Dos窗口下使用linux下的一些命令工具,完成一些文本日常处理。原创 2022-12-14 03:00:00 · 1323 阅读 · 0 评论 -
vim配置IDE,下载压缩包即拥有轻巧且强大的文本编辑器
工作中常用到c和c++开发,虽然有各种好用的IDE如QTCreater、CLion,还有各种常用的文本编辑工具如vscode,nodepad++,sublineText等。但是感觉还是强大的vim好用。vim小巧灵活,打开代码文件几乎是秒开,像用记事本一样轻便。CLion有点儿太重量级了,打开太慢,它比较适合大的工程项目。相信用了你会爱不释手,整个压缩包11M大小,你就拥有了可以媲美IDE强大的文本编辑神器。已经集成了各种常用的vim插件如支持目录树显示和浏览的NERDTree插件。自动代码原创 2022-03-13 13:00:00 · 5025 阅读 · 2 评论 -
SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂sm2算法的使用
网上有很多网友问算法sm2怎么使用?什么是压缩公钥和非压缩公钥,长度有多长?xB和yB这参数是什么?怎么使用sm2做加解密?如何签名和验签?有没有工具来验证下?这里分享个自己使用QT造的一个小工具,用来对sm2算法做个加解密和签名,验签的验证。p,a,b,Gx,Gy,n为椭圆曲线参数,目前sm2使用的是以下的值的参数,以后会不会变不知道。这些参数当然也可以改,作为测试或者打造自己的一套加解密算法。使用素数域256位椭圆曲线曲线方程:y^2=x^3+ax+b曲线.原创 2021-09-27 19:20:59 · 34193 阅读 · 36 评论 -
VirtualBox虚拟机成功安装Ubuntu18.04,设置共享文件夹总结
电脑上本来是想安装Vmvare14虚拟机,但是无奈总是提示hcmon.sys无法安装。然后,然后就自动回滚没法安装了。这问题着实烦人,网上的方法试过百遍了都无法解决,算了直接放弃。这里总结下经验,希望以后别在这上面折腾了。发现有更好用的VirtualBox还免费干嘛不用。我的版本是VirtualBox6.1,直接在360软件管家里下载就行。安装完成后可能遇到个问题,没法进入控制台报错了,提示是VBoxDrv.sys驱动无法安装。这时候不要慌,这个问题好解决。进入D:\Program Files\Orac原创 2021-08-28 16:47:36 · 3673 阅读 · 0 评论 -
使用go-zero微服务框架实现云监控后台(三.c语言操作cJson封装,json和结构体互转)
这是我计划的终端状态监控服务的终端部分的模块组件。终端应用程序定时更新状态文件,应用中跑的另一个后台服务则定时读取该状态文件并上送至后台服务。以此无耦合的实现对终端的状态监控。参见:https://blog.csdn.net/yyz_1987/article/details/118358038下面是c语言读写json文件的封装测试。#include <stdio.h>#include <string.h>#include <stdlib.h>#incl原创 2021-08-11 20:22:35 · 635 阅读 · 0 评论 -
curl命令行工具调试http接口使用小结
http接口太常用了,无论是微信,支付宝还是银联,都有https接口api, 工作中有时候需要调试下http接口。如果为了调试个接口就要敲代码的话,效率未免太低了。curl工具就很强大,直接用工具敲一下,就能把http接口给测一下,且可以打印出完整的过程,方便调试。举一个之前测试银联https的接口demo。为了安全起见,后台地址用XX表示。需要提交的二进制数据,我提前准备到aaa.bin文件里了...原创 2021-06-25 18:11:00 · 1286 阅读 · 1 评论 -
freetype的交叉编译及在嵌入式linux上的简单使用及改变字体背景和颜色
FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType, Type1, CID,CFF, Windows FON/FNT, X11 PCF等。以往使用中文字库时,免不了需要制作各种字体大小的字模。且有的制作的效果不是很好,需要多大的字体需要提前备好。如果能用上FreeType,这些都不是问题了,且还能各种的变换。freetype源码下载地址:freetype官网freetype2.8.1下载..原创 2020-12-12 12:38:52 · 1558 阅读 · 3 评论 -
别忘了给gcc编译器工具链加上-fno-common选项
还记得上篇文章中,AddressSanitizer(ASAN)linux下的内存分析神器的问题的文章吧,其中记录了一个明显的代码bug,若不加这个-fno-common选项,那么程序简直就是明显的错误,但可能还未被发现。举个栗子:int a[5];int b[5];memcpy(a,"1234567890",10); //明显越界了还不报错。多出来的拷贝到哪了?可能在 b[5]中。甚至 b[6]= 1这样超过数组的赋值也不会报错。因此,保险起见,别忘了给你的linux应用,交叉编原创 2020-07-24 20:41:32 · 5133 阅读 · 0 评论 -
记一个AddressSanitizer(ASAN)linux下的内存分析神器的问题
感谢万能的互联网,我向google工程师们提出的issue很快就得到了回复,解决了我的问题。我的问题是这样的:AddressSanitizer can't detect some global buffer overflow! #1285Closedyangyongzhenopened this issueyesterday· 1 commentyangyongzhencommentedyesterday what a pity! AddressSanitizer...原创 2020-07-24 20:28:34 · 1781 阅读 · 0 评论 -
linux下c语言内存检测神器asan,专治各种疑难杂症
最近工作中有地方嵌入式程序出现莫名其妙的问题,有时候正常的变量值都会突变了导致问题。这问题还是偶然出现的神秘莫测,若没有对内存检测的神器,很难定位。比如char buf[5], memcpy(buf,"12345678",8) ;明显超过了buf的范围,但程序竟正常运行不会报错,也没任何提示。c语言是强大,但是操作太灵活就是怪兽啊,类似这类的bug防不胜防。搞的我都想用两周时间用go语言重构一版终端程序。go语言高级语言,若类似这样的bug编译阶段都会过,比c语言应更安全和稳定。c语言的原创 2020-07-10 18:28:18 · 6457 阅读 · 0 评论 -
docker入门总结,从使用的角度谈起
大凡先进技术的产生,都不是凭空捏造的,更不是花花瓶子作秀博眼球的。或是要解决某些需求,某些痛点。有其存在的道理和价值。学习和使用一种技术,不是因为其高大上,好多大公司都在用就盲目去跟风,去学,去用。虽然开卷有益,多学习了解一点儿总是好的。但是,这样的效率不高,或者激不起学习的兴趣,或者太死板不能活学活用,学以致用。最好站在使用的角度去学习,实际操练一下,这是学习的一种方法。上大学时学到傅里...原创 2019-09-30 19:31:49 · 1478 阅读 · 0 评论 -
玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏
移植移植infoNES模拟器到嵌入式linux上,并增加支持声音输出和按键代码放在了github上。https://github.com/yongzhena/infoNES先来个效果截图:按键驱动源码:#include <linux/module.h>#include <linux/kernel.h>#include <...原创 2019-09-26 19:02:26 · 2112 阅读 · 0 评论 -
用Eclipse开源IDE+gcc编译器开始嵌入式编程
最近有个项目,不能在Keil uVision4 MDK中开发,只能在linux下并使用命令行的GCC编译器,手动写makefile,对于习惯了IDE的开发者来说多少有些不适应,尤其是查找函数定义之类的不方便。于是成功的实现了使用Eclipse的IDE,并配合GCC编译器开发嵌入式应用程序。Eclipse和GCC环境的搭建先略过,查资料都好解决。先贴出makefile模版,因为没有使用Eclpise原创 2013-12-27 23:29:15 · 2214 阅读 · 0 评论 -
Linus:什么样的代码是他所喜好的
作者:酷 壳 – CoolShell.cnLinus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。下面是Linus的教学原文及翻译——“At the opposite end of the spectrum, I ac转载 2014-01-01 11:29:04 · 1298 阅读 · 0 评论 -
常用的vim命令总结
vim就不多介绍了,很好用很强大。在windows下可以用gvim,配置一下_vimrc文件,再配合cscope和ctag等工具,就是一个功能强大的IDE。常用的命令在这里总结下,以后忘了可以看看,部分摘自网络轻快的VIM和部分网摘。首先记着它的三种模式,命令模式,插入模式,可视模式。常用的命令:分类一下,无非是编辑相关的,移动,复制,粘贴,插入,删除等操作。窗口相关的,多窗口,窗原创 2014-01-26 21:24:40 · 3228 阅读 · 0 评论 -
常用的vim配置,_vimrc文件
if has("gui_win32") source $VIMRUNTIME/vimrc_example.vim "source $VIMRUNTIME/mswin.vim set nocompatible "behave mswin " Remove menu, scroll bar and tools bar set guioptions-=m set guioptions-=原创 2014-01-26 21:04:58 · 1511 阅读 · 0 评论 -
为什么要选择Vim编辑器
高效率移动编辑1、在插入模式之外基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但 VIM 的强大之处在于他的命令模式!你会发现,在你越来越了解 VIM 之后,你就会花越来越少的时间使用插入模式了。2、使用 h、j、k、l使用 VIM 高效率编辑的第一步,就是放原创 2014-01-26 22:09:24 · 1838 阅读 · 0 评论 -
Vim使用笔记
让天赋自由人生的乐趣有多种:爱、享受、冒险等等,还有发现和创造。能享受后两种乐趣的人并不多。做事应该带着发现的心态而不是争强好胜的心态。 曾经使用了两年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。索引1. 关于Vim1.1 Vim的几种模式2. 启动Vim3. 文转载 2014-02-07 15:37:23 · 1119 阅读 · 0 评论 -
快速上手和使用makefile
想学习一样东西,最好先问个为什么要这样,这样学起来才有目标。上大学时,老师讲课总是告诉我们必须这样那样,很少讲这门课是干什么的,有什么意义,有什么用。有一次我问老师,为什么要傅里叶变换,学习它能用来做什么,老师先是很惊讶,然后耐心的给所有同学都讲了讲,老师讲完也很欣慰,笑着说因为很少有学生去问这样的问题。所以也只是讲课,没讲实际的应用和原理的东西。学生们听了也变得有兴趣,学的也认真了。原创 2014-01-01 10:49:16 · 1613 阅读 · 0 评论 -
C语言链表的理解
在操作系统和一些著名的框架设计中,如信号量,事件,消息队列,任务控制块,任务调度及各种算法中,经常使用到链表。链表太常见了,每当看到链表时,总有些发懵。看着很费力,主要还是对链表指来指去,没有个清晰直观的认识。那么画一下图吧,在遇到分析链表的问题,直接图示一下比较直观,在脑海中形成一种认识。以下从基础开始分析,对链表进行一下理解。网上很多对双向链表解释的文章都是用这个结构:原创 2015-12-12 16:32:22 · 1266 阅读 · 0 评论 -
c语言直接读写ini配置文件
现场好多地方反馈记录全采出来,无法入库。实际上采集部门专门做有一数据分析入库工具,但不是标准的,每个地方都需要采集部门特殊改。于是想到自己做一工具,模拟车载机通信,把全采出来的数据通过连接采集前置传至采集本地库。但是遇到一问题,参数和配置如何保存?windows系统中有一种ini配置文件,可以用它来保存配置。高级语言操作ini文件很简单,有现有的库,但c语言,只能自己做一个了。分享下C...原创 2015-12-12 16:43:30 · 20145 阅读 · 4 评论 -
C语言中的链表
链表是C语言编程中常用的数据结构,比如我们要建一个整数链表,一般可能这么定义:1234struct int_node { int val; struct int_node *next;};为了实现链表的插入、删除、遍历等功能,另转载 2015-12-05 14:16:13 · 889 阅读 · 0 评论 -
c语言实现TCP的socket通信
#include #include #include #include #include "NC_ComLib.h"SOCKET m_sock;int NetTimeout =8000 ;//网络超时时间void Com_Hook_DebugOutHex( unsigned char *data, unsigned int datalen ){ unsigned原创 2016-05-24 15:06:24 · 4480 阅读 · 3 评论 -
多文件目录Makefile的写法
多个文件目录下Makefile的写法1、前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile。关于Makefile的详细内容可以参考网上流传非常广泛的《跟我一起写Makefile》http://blog.csdn.net/haoel/article/details/2886/,作者是个大牛,非常佩服。2、原创 2016-07-13 13:25:30 · 1045 阅读 · 0 评论 -
Google 的开源技术protobuf 简介与例子
Google 的开源技术protobuf 简介与例子本文来自CSDN博客:http://blog.csdn.net/program_think/archive/2009/05/31/4229773.aspx 今天来介绍一下“Protocol Buffers ”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子转载 2016-07-13 14:38:01 · 643 阅读 · 0 评论 -
不得不说,minigui真的很坑
开发项目在嵌入式平台上使用MiniGui作为用户界面开发工具,在工作之余准备在ubuntu14.04上搭建一个测试环境,这样代码测试起来比较方便。前前后后搞了好多天,遇到了很多麻烦,但是最后还是跑通了。作为一个之前对minigui完全不懂的小白来说,真的需要好好摸索。总结一下:minigui真的很坑!如果不是项目必须的东西,我建议读者,能不用就不用。问题:min转载 2017-10-27 11:12:39 · 17017 阅读 · 2 评论 -
linux 编译 c或cpp 文件为动态库 so 文件(最简单直观的模板)
把源码编译打包为动态库so文件,做平台的可能对这些不熟悉。对我们这些算是经常用到的。总结个模板,一看就懂的那种,提供给有需要的人。前提条件,机器上有 gcc工具链。如果文件个数少,可以直接单个编译,如下:Building shared lib...g++ -c -fPIC Quote.cpp -o Quote.og++ -c -fPIC QuoteExport.cpp...原创 2019-08-15 11:53:44 · 2672 阅读 · 0 评论 -
有趣的数据结构——Linux内核中的链表
Linux内核中有很多种链表,如果对每一种链表都使用单独的数据结构去表示,那么需要对每个链表实现一组原语操作,包括初始化、插入、删除等。于是,Linux内核定义了一个很有趣的数据结构:list_headstruct list_head { struct list_head *next, *prev;};复制代码 乍一看这定义,似乎很普通,但妙就转载 2013-12-25 12:45:51 · 1421 阅读 · 0 评论