开源项目: 造一系列常用的Linux应用API轮子

简介: 开源项目: 造一系列常用的Linux应用API轮子

这个项目其实在很早之前就开始了,最初的目的是为它(Future3D)而准备的,因此最近一段时间利用晚上下班的时间以及周末的时间在完成,故很少更文。

640.png

这套接口的实现愿景是为了能够更快的搭建一套基于Posix接口的通用物联网3D打印框架而服务的,而这套框架将无差别的兼容全平台,无论是Linux、Win32还是Mcu等等,它都能够顺利运行;因此,我们需要去实现一些通用的轮子,例如文件IO、线程、定时器、消息队列、互斥锁、网络操作等等接口。因此在最初的选择是先基于Linux应用开发,先将常用的、通用的接口进行封装和实现,然后再开始设计业务逻辑和时序,最后调试整个系统。而相对于其它的平台移植起来就容易多了,我们只需要替换掉封装接口以下的Posix API,便能够实现无差别兼容。前这套Linux应用API轮子分为21个大类,后续还会根据需求继续增加,开源项目地址:

https://github.com/Yangyuanxin/Linux_APUE
https://gitee.com/morixinguan/Linux_APUE

640.png

项目是基于CMake构建,整体的统一编码风格是基于大驼峰。另外,每个小类中的实现都会有一个Test函数,例如目录操作的test函数:

#ifdef TEST_OPEN
Void CallBack(S8 *Name)
{
    printf("Name: %s\n", Name);
}
S32 DirOperateTest(Void)
{
    S32 Counter = 0;
    //扫描当前目录下的所有文件并通过CallBack将目录下的所有文件
    //打印出来
    Counter = ScanListFiles(".", Null, CallBack);
    if(Counter < 0)
    {
        printf("ScanListFiles fail!\n");
        return -1;
    }
    printf("Have't Suffix Counter = %d\n", Counter);
    //扫描当前目录下所有的.txt文件并通过CallBack将目录下的所有.txt文件打印出来
    Counter = ScanListFiles(".", ".txt", CallBack);
    if(Counter < 0)
    {
        printf("ScanListFiles fail!\n");
        return -1;
    }
    printf("Have Suffix Counter = %d\n", Counter);
    printf("DirOperate Test Success!\n");
    return 0;
}
#endif

它是用于告诉用户这些接口应该如何去使用以及针对接口的简单测试用例项目的主入口是main.c,main.c会去调用各个子类下的Test接口函数。

项目构建方法

640.png

最终会在这个目录下生产a.out可执行程序:

640.png

如果需要将其移植到ARM Linux平台上运行,只需要修改CMakeList.txt文件即可,如下所示:

#配置交叉编译器,如果默认以GCC编译,则注释
SET(CMAKE_C_COMPILER   /home/book/workspace/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER /home/book/workspace/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++)

添加对应的交叉编译器即可。

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

往期精彩

Linux Posic消息队列和System V消息队列的区别


嵌入式Linux Qt应用开发WIFI搜索、显示与连接思路


嵌入式linux检测U盘拔插与QT界面开发相结合的实现思路


嵌入式Linux MIPI接口LCD调试-关于DRM显示与应用调试的干货浓缩

目录
相关文章
|
1天前
|
Ubuntu Linux C语言
【opencv】opencv在windows和linux的应用
【opencv】opencv在windows和linux的应用
|
2天前
|
Linux 数据处理
Linux命令中的tic:深入了解与高效应用
`tic`是Linux中用于处理 Tektronix 4015 终端文本解释的命令,源于troff文本格式化系统。尽管现代系统不再常见该终端,`tic`仍用于特定数据处理,尤其是与troff配合,将troff输出转换为特定格式。使用时注意兼容性、输入格式和参数调整,如`-a`设定宽高比。通过`man tic`可获取更多详情。示例:`troff document.tr | tic`。了解这些能更好地处理特定文本格式任务。
|
3天前
|
Java Linux Spring
在 Linux 系统中将 Spring Boot 应用作为系统服务运行
【6月更文挑战第11天】最近由于一些原因,服务器经常会重启,每次重启后需要手动启动 Spring Boot 的工程,因此我需要将其配置成开启自启动的服务。
14 1
|
6天前
|
JavaScript Ubuntu Linux
Linux系统之部署PPTist在线演示文稿应用
【6月更文挑战第12天】Linux系统之部署PPTist在线演示文稿应用
18 1
|
7天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之SD API模式可以通过什么方式进行访问
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7天前
|
JavaScript 关系型数据库 Serverless
Serverless 应用引擎操作报错合集之在调用stable Diffusion函数计算api接口返回,报错:"Not Found"一般是什么原因
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
8天前
|
移动开发 监控 API
WebSocket API 详解与应用指南
WebSocket API 是HTML5的一种技术,它允许服务器与客户端建立持久的全双工连接,改变传统HTTP请求-响应模式,实现双向通信。API包括WebSocket构造函数、连接状态属性(如readyState)、方法(如send和close)及事件(如onopen和onmessage)。它简化了实时Web应用程序的开发,适用于在线聊天、实时数据监控等场景。
|
10天前
|
Linux 数据库 数据库管理
Linux下的`db_checkpoint`命令:深入解析与应用
`db_checkpoint`是Linux下Berkeley DB的命令,用于触发检查点操作,保证数据库故障恢复时的一致状态。它锁定数据库、刷新内存中的写入、更新日志并解锁。在Linux中,通过命令行调用,如`db_checkpoint -h /path/to/db_home`,可配合 `-f` 强制写入,`-v` 获取详细输出。注意权限、并发性能影响及事务一致性。使用得当能提升数据库可靠性和性能。
|
11天前
|
机器学习/深度学习 自然语言处理 Linux
hisper 在 Linux 中的应用,以及如何利用它来实现高效的自动语音识别
【6月更文挑战第7天】本文探讨了Whisper,一个基于Linux的先进自动语音识别(ASR)系统,它使用PyTorch构建,支持多语言识别。在Linux环境下,通过安装依赖、下载代码、配置环境变量及编译安装,可实现Whisper的部署。Whisper以其多语言支持、高准确性和实时性,适用于语音助手、翻译等场景。随着技术发展,Whisper有望在更多领域发挥作用。
39 5
|
12天前
|
机器学习/深度学习 自然语言处理 监控
从数据到决策:拼多多商品详情API在市场分析中的应用
本文探讨了如何利用拼多多商品详情API进行市场分析,该API提供商品基本信息、价格销量、用户评价和商品属性等数据,助力商家和分析师理解消费者行为、预测市场趋势、分析竞争环境及优化产品策略。通过数据收集、分析和整合,企业可借助此工具制定精准市场策略。案例展示了市场趋势、竞争情报和用户评价情感分析的应用。未来,随着技术进步,此类API的应用将更加广泛,推动电商行业创新。