开源项目: 造一系列常用的Linux应用API轮子
Posted Engineer-Bruce_Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源项目: 造一系列常用的Linux应用API轮子相关的知识,希望对你有一定的参考价值。
点击上方“嵌入式应用研究院”,选择“置顶/星标公众号”
干货福利,第一时间送达!
来源 | 嵌入式应用研究院
整理&排版 | 嵌入式应用研究院
这个项目其实在很早之前就开始了,最初的目的是为它(Future3D)而准备的,因此最近一段时间利用晚上下班的时间以及周末的时间在完成,故很少更文。
这套接口的实现愿景是为了能够更快的搭建一套基于Posix接口的通用物联网3D打印框架而服务的,而这套框架将无差别的兼容全平台,无论是Linux、Win32还是Mcu等等,它都能够顺利运行;因此,我们需要去实现一些通用的轮子,例如文件IO、线程、定时器、消息队列、互斥锁、网络操作等等接口。因此在最初的选择是先基于Linux应用开发,先将常用的、通用的接口进行封装和实现,然后再开始设计业务逻辑和时序,最后调试整个系统。而相对于其它的平台移植起来就容易多了,我们只需要替换掉封装接口以下的Posix API,便能够实现无差别兼容。目前这套Linux应用API轮子分为21个大类,后续还会根据需求继续增加,开源项目地址:
https://github.com/Yangyuanxin/Linux_APUE
https://gitee.com/morixinguan/Linux_APUE
项目是基于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接口函数。
项目构建方法
最终会在这个目录下生产a.out可执行程序:
如果需要将其移植到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++)
添加对应的交叉编译器即可。
参与贡献
Fork 本仓库
新建 Feat_xxx 分支
提交代码
新建 Pull Request
往期精彩
Linux Posic消息队列和System V消息队列的区别
嵌入式Linux MIPI接口LCD调试-关于DRM显示与应用调试的干货浓缩
觉得本次分享的文章对您有帮助,随手点[在看]
并转发分享,也是对我的支持。
以上是关于开源项目: 造一系列常用的Linux应用API轮子的主要内容,如果未能解决你的问题,请参考以下文章