
深耕Linux系统下的应用开发
文章平均质量分 94
Linux操作系统基础知识:了解Linux的基本概念、命令行操作、文件系统、用户和权限管理等掌握网络编程相关知识,如 TCP/IP 协议栈、套接字(Socket)编程等,可以实现网络通信功能。 常见的二次开发库详细说明介绍,如libcurl、OpenSSL、json-c、freetype等。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
妄北y
欢迎学习交流+vx:Vir2025WBY。 嵌入式领域优质创作者、阿里云社区专家博主、古月居(机器人+嵌入式类的原创技术平台)签约作者,专注于嵌入式单片机,Linux应用和驱动开发。 帮助别人,成长自己!欢迎一起学习基础编程知识!C语言、C++、Python、Java、单片机、Linux、算法od等基础或者进阶知识点或项目实战,均可加我咨询,一起讨论学习进步!
展开
-
【常见开源库的二次开发】HTTP之libcurl库——基础知识扫盲(一)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先堆HTTP和HTTPS,密码学等基础知识进行一个学习和掌握。原创 2024-06-01 17:40:01 · 977 阅读 · 1 评论 -
嵌入式开发系统学习——干货分享
嵌入式工程师在工作中需要不断学习和掌握新的技术、工具和知识,以应对各种开发挑战。以下是一些嵌入式工程师必须收藏的干货网站,以及开发问题的介绍:原创 2024-03-11 11:34:18 · 5263 阅读 · 22 评论 -
Linux下的IMX6ULL——环境搭建与软件安装(一)
从今天开始我们就要用到IMX6ULL这块开发板进行linux的学习了,对于初学者,下载好资料、搭建好开发环境后,按照下面顺序学习即可: 先应用,再驱动,最后做项目。应用、驱动、项目这三个慢慢走下来找个工作应该不是很难,难的是学扎实,找个好工作。原创 2023-10-23 12:53:27 · 4050 阅读 · 1 评论 -
Linux系统移植——开发板烧写
eMMC(Embedded MultiMediaCard)是一种嵌入式存储解决方案,通常用于移动设备、平板电脑和一些嵌入式系统中。eMMC将存储控制器和闪存存储器集成在一起,提供一种高效且成本较低的存储方式。原创 2024-08-13 18:05:17 · 1191 阅读 · 0 评论 -
Linux系统移植——系统移植初步介绍
移植就是将bootloader的源代码,inux内核源代码,文件系统中用户态程序代码根据硬件做少量修改使其能够在目标硬件平台上运行起来的过程。原创 2024-08-13 14:18:52 · 1433 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——SHA算法源码解析(六)
安全散列算法是一种加密散列函数,生成固定长度的散列值(或摘要),用于确保数据完整性和验证数据的真实性。原创 2024-07-24 15:44:53 · 1215 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——MD5算法源码解析(五)
通过计算文件的 MD5 哈希值来监控文件的完整性。它首先进行字符串的 MD5 哈希计算以测试功能,然后进入一个无限循环,定期检查指定文件的 MD5 哈希值。如果检测到文件发生了变化,程序会输出新的哈希值并更新记录的哈希值。原创 2024-07-18 18:00:12 · 1373 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——单向散列函数(四)
单项散列函数也称为哈希函数,是一种从输入数据(通常称为“消息”)生成固定大小输出(通常称为“哈希值”或“哈希码”)的算法。单向散列函数的关键特性之一是它们的单向性和抗碰撞性,这意味着从哈希值反推原始数据是非常困难的,并且找到两个不同的输入数据,使其产生相同的哈希值也非常困难。原创 2024-07-17 15:15:29 · 1139 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)
Base58编码是在Base64字符集基础上,为了避免混淆而进行的优化。它去除了在Base64中可能引起混淆的字符,包括数字0、大写字母O、小写字母l、大写字母I,以及“+”和“/”两个符号。这样的设计使得Base58在视觉上更为清晰,减少错误。原创 2024-07-15 16:44:09 · 935 阅读 · 2 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)
Base64是一种编码方式,用于将二进制数据转换为ASCII字符串,以便在只支持文本的媒体上进行存储和传输。它不是一种加密算法,而是一种数据编码技术。Base64编码是一种简单而有效的数据编码方式,它允许二进制数据在文本环境中安全地传输和存储。尽管它不提供安全性(数据在传输过程中可以被读取),但它确保了数据的完整性和可移植性。原创 2024-07-15 13:43:26 · 1376 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)
OpenSSL 是一个开源的软件库,它提供了一系列加密工具和协议,主要用于实现安全通信,如在网络上的数据传输。它支持多种加密算法,包括对称加密、非对称加密、散列函数、伪随机数生成器、数字签名、密钥交换以及证书管理等。原创 2024-07-10 14:54:35 · 3388 阅读 · 0 评论 -
【常见开源库的二次开发】一文学懂CJSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集,但是JSON是独立于语言的,这意味着尽管JSON是由JavaScript语法衍生出来的,它可以被任何编程语言读取和生成。JSON的设计目的是使数据交换既简单又快速,相对于其他数据交换格式如XML,JSON更加轻巧,这使得它在网络上传输更加高效。对于人类和机器来说,JSON文本的格式都是易于理解的。原创 2024-07-09 23:35:07 · 902 阅读 · 1 评论 -
【常见开源库的二次开发】libcurl实战项目——车牌识别(四)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先对libcurl库运用到实战项目中进行一个简单的教程与学习原创 2024-06-03 18:06:14 · 811 阅读 · 1 评论 -
【常见开源库的二次开发】libcurl实战项目——人脸识别(三)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先对libcurl库运用到实战项目中进行一个简单的教程与学习原创 2024-06-03 11:50:24 · 4082 阅读 · 30 评论 -
【常见开源库的二次开发】HTTP之libcurl库——libcurl使用(二)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先对libcurl库进行一个详细的分析与学习。原创 2024-06-02 15:04:40 · 1283 阅读 · 3 评论 -
Linux基础项目开发1:量产工具——改进优化(八)
前面我们已经构造出来显示系统、输入系统、文字系统、UI系统、页面系统,业务系统,这个小项目该完成的功能我们已经都完成了,但是还是有很多地方可以优化改进的,现在让我们对这个系统不足的地方进行相应的和改进与优化吧。原创 2023-12-10 01:00:00 · 2890 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——业务系统(七)
前面我们已经构造出来显示系统、输入系统、文字系统、UI系统、页面系统,这个项目百分之八十需要实现的都已经构建出来了,最后让我们对这个项目进行最后一项系统的搭建,也就是业务系统,说到业务大家应该就知道我们要干什么了,那就是把所有的代码整合到一起实现一些我们想要实现的功能。原创 2023-12-03 19:05:03 · 3170 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——页面系统(六)
前面我们已经将显示系统、输入系统、文字系统、UI系统全部搭建好了,下面就到了开发板页面的布局,也就是实现按钮在开发板页面上的每个位置,下面让我们一起实现页面的搭建与布局设计吧。原创 2023-12-03 14:53:58 · 2583 阅读 · 5 评论 -
Linux基础项目开发1:量产工具——UI系统(五)
前面我们已经把显示系统、输入系统、文字系统搭建好了,现在我们就要给它实现按钮操作了,也就是搭建UI系统,下面让我们一起实现UI系统的搭建吧。原创 2023-12-02 19:04:32 · 4063 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——文字系统(四)
前面我们已经把显示系统,输入系统的框架搭建好了,那么有了输入和显示,显示的内容应该是什么呢?这节就要让我们一起对显示的内容,文字系统进行搭建。原创 2023-12-02 00:15:00 · 3065 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——输入系统(三)
前面我们已经实现了显示系统,现在我们来实现输入系统,与显示系统类似,下面让我们一起来对输入系统进行学习搭建吧原创 2023-11-29 20:17:43 · 3641 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——显示系统(二)
前面我们已经对这个项目的基本框架有了一个初步的了解与认识,要实现显示管理器与输入管理器,有输入有输出基本就实现这个项目的大部分功能了,首先我们先来做显示系统,对于上层系统为了让程序更好扩展,我们得添加一个显示管理器,在下面有各种设备,就比如有Framebufler和web输出。原创 2023-11-28 22:48:52 · 3396 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——程序框架(一)
前面已经将Linux应用开发基础知识学习完了,现在让我们来做个小项目练练手,对之前的一些知识点进行一个更加具体详细的认识与了解,我们要进行的项目名称为:电子产品量产测试与烧写工具,这是一套软件,用在我们的实际生产中, 在具体开发中我们将显示系统,输入系统,文字系统,UI系统,页面系统,业务系统这五个板块进行学习。原创 2023-11-27 20:26:23 · 3504 阅读 · 1 评论 -
Linux应用开发基础知识——I2C应用编程(十三)
APP 访问硬件肯定是需要驱动程序的,对于 I2C 设备,内核提供了驱动程序 drivers/i2c/i2c-dev.c,通过它可以直接使用下面的 I2C 控制器驱动程序来 访问 I2C 设备。原创 2023-11-23 18:02:05 · 3619 阅读 · 0 评论 -
Linux应用开发基础知识——I2C应用编程(十二)
I2C(Inter-IntegratedCircuitBUS)是集成电路总线,是目前应用最广泛的总线之一,最初由PHILIPS(现为NXP)设计。它使用多主从架构,主要用于连接低速周边设备。I2C总线在硬件物理层包括两条线:一条数据线(SDA)和一条时钟线(SCL)。所有设备都连接在这两条线上。原创 2023-11-23 18:01:18 · 3950 阅读 · 0 评论 -
Linux应用开发基础知识——串口应用编程(十一)
在Linux系统中,串口设备以文件的形式存在,通常位于/dev目录下,如ttyS0、ttyUSB0等。这些设备文件可以用于读取和写入数据。要使用串口设备,需要打开相应的设备文件。在打开串口时,可以使用O_RDWR选项标志进行读写操作,同时使用O_NOCTTY选项标志告诉Linux“本程序不作为串口的‘控制终端’”,以避免一些输入字符影响进程运行。下面让我们对串口应用编程进行一个简单的入门学习吧。原创 2023-11-22 19:41:18 · 3270 阅读 · 0 评论 -
Linux应用开发基础知识——多线程编程(十)
在编写代码时,是否会遇到以下的场景会感觉到难以下手?要做 2 件事,一件需要阻塞等待,另一件需要实时进行。例如播放器:一边在屏幕上播放视频,一边在等待用户的按键操作。如果使用单线程的话,程序必须一会查询有无按键,一会播放视频。查询按键太久,就会导致视频播放卡顿;视频播放太久,就无法及时响应用户的操作。并且查询按键和播放视频的代码混 杂在一起,代码丑陋。如果使用多线程,线程1单独处理按键,线程 2 单独处理播放,可以完美解决上述问题。原创 2023-11-22 14:14:53 · 3080 阅读 · 0 评论 -
Linux应用开发基础知识——网络通信编程(九)
通过学习为后续Linux网络编程奠定基础。首先介绍网络编程的概念,即网络协议分层,旨在帮助读者对网络建立初步的、全面立体的认识,其次介绍包括协议、端口、地址等;最后介绍应用非常广泛的传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)的基本概念及其区别以及这两种协议的编程。原创 2023-11-21 18:05:00 · 3878 阅读 · 15 评论 -
Linux应用开发基础知识——输入系统应用编程(八)
触摸屏分为电阻屏、电容屏。电阻屏结构简单,在以前很流行;电容屏支持多点触摸,现在的手机基本都是使用电容屏。我们应当注意的是LCD、触摸屏不是一回事,LCD 是输出设备,触摸屏是输入设备。制作触摸屏时特意把它的尺寸做得跟 LCD 一模一样,并且把触摸屏覆盖在 LCD 上,让我们学习一下输入系统里面的电阻屏与电容屏。原创 2023-11-19 22:34:40 · 2530 阅读 · 0 评论 -
Linux应用开发基础知识——输入系统应用编程(七)
常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些 输入设备与 Linux 系统进行数据交换。输入设备种类繁多,能否统一它们的接口?既在驱动层面统一,也在应用程序层面统一?事实上是可以的。 Linux 系统为了统一管理这些输入设备,实现了一套能兼容所有输入设备的 框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的 API 去使用设备。原创 2023-11-17 15:59:24 · 2530 阅读 · 0 评论 -
Linux应用开发基础知识——LCD上的矢量字体Freetype(六)
关 键 点 (glyph) 存 在 字 体 文 件 中 , Windows 使 用 的 字 体 文 件 在 c:\Windows\Fonts 目录下,扩展名为 TTF 的都是矢量字库,我们的是新宋字体 simsun.ttc。给定一个字符,怎么在字体文件中找到它的关键点?首先要确定该字符的编码值:比如 ASCII 码、GB2312 码、UNICODE 码。如果字体文件支持某种编码格式(charset),就可以使用这类编码值去找到该字符的关键点(glyph)。原创 2023-11-12 16:36:03 · 2811 阅读 · 3 评论 -
Linux应用开发基础知识——字符文字编码(五)
TXT 文件中保存的是字符的核心:它的编码值。而 Notepad 上显示时, 这些字符对应什么样的形状态,这是由字符文件决定的。编码值,字体是两个不一样的东西,比如 A 的编码值是 0x41,但是在屏幕上显示出来时可以使用不同的形状。什么叫编码?就是一个字符用什么数字来表示。在计算机里一切都是用数字来表示,比如字符 A,用 0x01 还是 0x02 来表示它?我们使用 0x41 来表示它。当你去打开一个 TXT 文件时,发现里面含有数值 0x41,你就知道了:哦,这里有一个字符 A。原创 2023-11-12 11:09:20 · 2338 阅读 · 0 评论 -
Linux应用开发基础知识——Framebuffer 应用编程(四)
在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意 思,buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着 一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 LCD 的 分辨率是 1024x768,每一个像素的颜色用 32 位来表示,那么 Framebuffer 的 大小就是:1024x768x32/8=3145728 字节。原创 2023-11-10 18:02:06 · 3552 阅读 · 2 评论 -
Linux应用开发基础知识——文件IO操作(三)
Linux 的文件既可以是真实保存到存储介质的文件也可以 是自身内核提供的虚拟文件,还可以是设备节点。原创 2023-11-10 15:23:05 · 2438 阅读 · 1 评论 -
Linux应用开发基础知识——Makefile 的使用(二)
在 Linux 中使用 make 命令来编译程序,特别是大程序;而 make 命令所执 行的动作依赖于 Makefile 文件。最简单的 Makefile 文件: hello: hello.c 、gcc -o hello hello.c 、clean:、 rm -f hello 将上述 4 行存为 Makefile 文件,放入 01_hello 目录下,然后直接执行 make 命令即可编译程序,执行 “make clean”即可清除编译出来的结果。原创 2023-11-07 12:34:18 · 2296 阅读 · 0 评论 -
Linux应用开发基础知识——交叉编译与gcc编译(一)
源文件需要经过编译才能生成可执行文件。在 Windows 下进行开发时,只需 要点几个按钮即可编译,集成开发环境(比如 Visual studio)已经将各种编译 工具的使用封装好了。Linux 下也有很优秀的集成开发工具,但是更多的时候是 直接使用编译工具;即使使用集成开发工具,也需要掌握一些编译选项。PC 机上的编译工具链为 gcc、ld、objcopy、objdump 等,它们编译出来的 程序在 x86 平台上运行。原创 2023-11-05 15:28:03 · 3347 阅读 · 0 评论 -
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
Linux 平台上有许多开源的嵌入式linux系统构建框架(框架的意思就是工 具),这些框架极大的方便了开发者进行嵌入式系统的定制化构建,目前比较常 见的有OpenWrt, Buildroot, Yocto,等等。其中Buildroot功能强大,使用 简单,而且采用了类似于linux kernel的配置和编译框架,所以受到广大嵌入 式开发人员的欢迎。原创 2023-11-03 16:41:17 · 2925 阅读 · 0 评论 -
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
万事开头难,如果我们在开发板上开发出第一个应用程序,第一个驱动程序,那么后续的开发就会稍微简单点,下面让我们来进行第一个应用程序和第一驱动程序的开发吧原创 2023-10-29 21:06:37 · 2888 阅读 · 2 评论 -
Linux下的IMX6ULL——开发板基本操作(二)
前面我们已经配置好了环境,下载好了软件,下面让我们对我们使用的开发板有给简单的了解吧,IMX6ULL Pro开发板基本操作是必不可少的一大环节,下面让我们从它的硬件资源,软件资源等一系列开发板的基础操作做一个大概的认识吧原创 2023-10-24 11:52:08 · 3124 阅读 · 1 评论