# M5STACK_LINUX_LIBS `dianjixz_libs` 一个公开的/自由的 linux c/c++ 应用开发库,提供的丰富的库和编程示例,它是一个最小依赖框架。可以在 unix 环境中编译本机和嵌入式平台的 c/c++ 项目。 ## 项目目录简介 介绍项目的主要目录以及作用。 ``` bash dianjixz-lib/ ├── components #组件库根目录,这是构成项目的重要组成部分,可以选择性的将库编译到项目中去,从而达到最小依赖和最小可执行文件体积。 ├── component1 # 组件库模板,可以依照该模板快速添加组件库 ├── hv # 添加的 libhv 组件库 ├── lvgl_component # 添加的 libhv 组件库 └── DeviceDriver # 添加的 linux 硬件组件库 ├── include # 头文件的 include 目录 ├── party ├── framebuffer # linux framebuffer 开发的简单库 ├── linux_i2c # linux i2c 硬件使用库 ├── linux_spi # linux spi 硬件使用库 ├── linux_uart # linux uart 硬件使用库 ├── ptmx # linux pts虚拟终端库 ... ├── doc # 文档目录 ├── examples # 大量的开发示例库,同时项目的源代码也会在该目录中。 │ ├── demo1 # 项目的模板,可以复制该目录,快速建立一个开发工程。 ... ├── github_source # github 源码存放位置 │ ├── source-list.sh # github 源码仓库索引,需要手动下载文件到该目录。该目录除了 source-list.sh 文件外,其他的文件不会被纳入仓库的记录范围。 │ ├── libhv # libhv源码 └── tools # 脚本和工具的存放目录 ├── cmake # cmake 编译脚本 ├── config_defaults_cross.mk # 交叉平台的默认配置,主要用于交叉编译的 sdk 设置。 ├── kconfig # make menuconfig 的主要库目录 ├── Makefile.mk # 通用 make 操作的实现。 ``` 想要使用一个框架,首先了解框架的主要目录结构是基础,然后开始编译一个 hello world! 程序作为我们的开始。 框架依赖 make cmake python3 expect 软件包。请确保安装上述软件包, ``` bash # 安装依赖(只需要安装一次) sudo apt update sudo apt install make cmake python3 expect # 假定你目前的终端在 dianjixz-lib 目录。进入 examples/demo1 cd examples/demo1 # 开始编译,有时可能会出现编译失败的情况,使用 `make distclean` 可以彻底清理项目编译文件。 make # 执行完 make 命令后,项目将会完成编译,生成的可执行文件和相关依赖库会被复制到 dist 目录向。可以选择 make 运行或者手动运行 make run # make 运行测试 # cd dist;./demo1 # 手动运行测试 # 清理编译文件 make clean # 彻底清理编译文件,包括 make menuconfig 生成的编译项 make distclean ``` ## 特性 - 跨平台(Linux, Windows, macOS) - 高性能软件库,libhv,mongoose,stb,Cimg 等等可以让你迅速使用的库. - 拥有各种库的使用示例,不用辛苦在网上找库,下载库,安装库,然后寻找库的使用方法.简单的库,代码及文档,复杂的库直接使用示例. - TCP/UDP服务端/客户端等示例 - 可靠UDP支持: WITH_KCP 示例 - WebSocket服务端/客户端示例 - MQTT客户端示例 - c/c++混合开发 - 快速交叉编译. make set_arm 一个命令切换交叉编译器,享受无缝交叉编译. - 最小依赖,框架内组件的依赖自动打包,可选动态依赖和静态依赖,告别复杂依赖的烦恼. - 最小执行程序的设置,开启 release 编译后可生成最小可执行文件尺寸. - 编译过程全可控.verbose 选项可显示出编译过程的每一个命令. ## 更多的示例 在项目的 examples 目录下,拥有多线程,多线程同步锁,守护进程,动态库调用,linux 硬件总线开发,lvgl gui, u8g2 驱动 sh1107 等众多示例,可以随时在其他仓库中复制代码添加到自己的项目中. ## 编译本机程序 ``` bash # 进入工作目录 cd examples/demo1 # 编译 make # 测试运行程序 make run ``` ## 交叉编译程序 ``` bash # 进入工作目录 cd examples/demo1 # 设置交叉编译工具链 make set_arm # 编译 make # 使用 scp 上传 make push # 使用 ssh 命令运行程序 # make push_run ``` ## 相关命令 ``` bash # 清理编译文件 make clean # 彻底清理编译文件 make distclean # 编译优化版程序(可能出现异常) make release # 输出详细的编译过程 make verbose # 打开或者关闭自带的库 make menuconfig ``` ## 更多信息 []()