当前位置: 首页 > news >正文

ubus编译_环境搭建

文章目录

  • 一、环境搭建脚本
    • toolChain_jsonc.cmake
    • toolChain_libubox.cmake
    • toolChain_ubus.cmake
    • install.sh
  • 二、测试
    • 出现问题:
  • 三、测试uloop
    • main.c 每5s打印信息

一、环境搭建脚本

准备四个文件
在这里插入图片描述

install.sh,toolChain_jsonc.cmake,toolChain_libubox.cmake,toolChain_ubus.cmake

toolChain_jsonc.cmake

set(CMAKE_SYSTEM_NAME Linux)
SET(TOOLCHAIN_DIR "/usr")
set(CMAKE_C_COMPILER   ${TOOLCHAIN_DIR}/bin/gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/g++)
set(CMAKE_FIND_ROOT_PATH "/home/yyh/ubus_libs/json-c")
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

toolChain_libubox.cmake

set(CMAKE_SYSTEM_NAME Linux)
SET(TOOLCHAIN_DIR "/usr")
set(CMAKE_C_COMPILER   ${TOOLCHAIN_DIR}/bin/gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/g++)
set(INSTALL_PATH "/home/yyh/ubus_libs/install_build_ubuntu")include_directories(${INSTALL_PATH}/include)
include_directories(${INSTALL_PATH}/include/json-c)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)set(CMAKE_FIND_ROOT_PATH "/home/yyh/ubus_libs/ubox") # or libubox
set(json "/home/yyh/ubus_libs/install_build_ubuntu/lib/libjson-c.so")

toolChain_ubus.cmake

set(CMAKE_SYSTEM_NAME Linux)
SET(TOOLCHAIN_DIR "/usr")
set(CMAKE_C_COMPILER   ${TOOLCHAIN_DIR}/bin/gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/g++)set(INSTALL_PATH "/home/yyh/ubus_libs/install_build_ubuntu")
include_directories(${INSTALL_PATH}/include)
set(CMAKE_FIND_ROOT_PATH "/home/yyh/ubus_libs/ubus" $(INSTALL_PATH)) 
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)set(blob_library     ${INSTALL_PATH}/lib/libblobmsg_json.so)
set(json             ${INSTALL_PATH}/lib/libjson-c.so)
set(ubox_include_dir ${INSTALL_PATH}/include/libubox)
set(ubox_library     ${INSTALL_PATH}/lib/libubox.so)

install.sh

#!/bin/bash
# @Author: yyh
# @Date:   2023-03-08 13:32:27
# @Last Modified by:   yyh
# @Last Modified time: 2023-03-08 17:09:22LIBS_DIR=/home/yyh/ubus_libsLIB_LIBUBOX_DIR=libubox
LIB_UBUS_DIR=ubus
LIB_JSONC_DIR=json-cCOMPILE_EV=install_build_ubuntuif [[ $1 = "git_libs" ]]; thenmkdir $LIBS_DIR -pcd $LIBS_DIRgit clone https://github.com/json-c/json-c.gitgit clone http://git.openwrt.org/project/libubox.gitgit clone https://git.openwrt.org/project/ubus.git
fiif [[ $1 = "compile_lib" ]]; thencp *.cmake $LIBS_DIRcd $LIBS_DIRmkdir ${LIBS_DIR}/${COMPILE_EV} -pcd ${LIBS_DIR}/$LIB_JSONC_DIRcmake -DCMAKE_INSTALL_PREFIX=${LIBS_DIR}/${COMPILE_EV} -DCMAKE_TOOLCHAIN_FILE=${LIBS_DIR}/toolChain_jsonc.cmake .# cmake -DCMAKE_INSTALL_PREFIX=/home/yyh/ubus_libs/install_build_ubuntu -DCMAKE_TOOLCHAIN_FILE=/home/yyh/ubus_libs/toolChain_jsonc.cmake .makesudo make installsudo ldconfig -vcd ${LIBS_DIR}/$LIB_LIBUBOX_DIRcmake -DBUILD_LUA=OFF -DCMAKE_INSTALL_PREFIX=${LIBS_DIR}/${COMPILE_EV} -DCMAKE_TOOLCHAIN_FILE=${LIBS_DIR}/toolChain_libubox.cmake .# cmake -DCMAKE_INSTALL_PREFIX=/home/yyh/ubus_libs/install_build_ubuntu -DCMAKE_TOOLCHAIN_FILE=/home/yyh/ubus_libs/toolChain_libubox.cmake .makesudo make installcd ${LIBS_DIR}/$LIB_UBUS_DIRcmake -DBUILD_LUA=OFF -DCMAKE_INSTALL_PREFIX=${LIBS_DIR}/${COMPILE_EV} -DCMAKE_TOOLCHAIN_FILE=${LIBS_DIR}/toolChain_ubus.cmake .#cmake -DCMAKE_INSTALL_PREFIX=/home/yyh/ubus_libs/install_build_ubuntu -DCMAKE_TOOLCHAIN_FILE=/home/yyh/ubus_libs/toolChain_ubus.cmake .makesudo make installfi

二、测试

安装相关库

sudo apt-get install libjsoncpp-dev 
sudo apt-get install zmap
sudo apt-get install autoconf automake libtool
sudo apt install lua5.1
chmod +x ./install.sh
./install.sh git_libs
./install compile_lib

在这里插入图片描述

出现问题:

/home/yyh/ubus_libs/libubox/blobmsg_json.c:23:11: fatal error: json/json.h: 没有那个文件或目录23 |  #include <json/json.h>|           ^~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/blobmsg_json.dir/build.make:63:CMakeFiles/blobmsg_json.dir/blobmsg_json.c.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:211:CMakeFiles/blobmsg_json.dir/all] 错误 2
make: *** [Makefile:130:all] 错误 2解决:
sudo cp  /home/yyh/ubus_libs/install_build_ubuntu/include/json-c /home/yyh/ubus_libs/install_build_ubuntu/include/json	 -rf

三、测试uloop

在这里插入图片描述

makefile

CC = gcc
CFLAGS = -I./include -L./lib  -lubox -lubus#-lblobmsg_json -ljson_script -ljson-c  
TARGET = main_ubuntuall:$(CC) -o $(TARGET) main.c $(CFLAGS).PHONY:clean
clean:rm -rf *.o $(TARGET)

main.c 每5s打印信息

/*
* @Author: yyh
* @Date:   2023-03-08 17:17:35
* @Last Modified by:   yyh
* @Last Modified time: 2023-03-08 17:40:41
*/
/*
typedef void (*uloop_timeout_handler)(struct uloop_timeout *t);
struct uloop_timeout
{struct list_head list;bool pending;uloop_timeout_handler cb;struct timeval time;
};
*/#include <stdio.h>
#include "./libubox/uloop.h"static void timeout_handler(struct uloop_timeout *timeout)
{printf("(hello world)\n");
}static struct uloop_timeout timer = {.cb = timeout_handler,
};int main(int args, char *argv[])
{uloop_init();uloop_timeout_set(&timer, 5000);    // 5suloop_run();return 0;
}

相关文章:

ubus编译_环境搭建

文章目录一、环境搭建脚本toolChain_jsonc.cmaketoolChain_libubox.cmaketoolChain_ubus.cmakeinstall.sh二、测试出现问题&#xff1a;三、测试uloopmain.c 每5s打印信息一、环境搭建脚本 准备四个文件 install.sh,toolChain_jsonc.cmake,toolChain_libubox.cmake,toolChai…...

移动通信(16)信号检测

常见的信号检测算法一般包括以下几类检测算法&#xff1a;最优、线性和非线性。最优检测算法&#xff1a;最大似然算法线性检测算法&#xff1a;迫零检测算法和最小均方误差检测算法非线性检测算法&#xff1a;串行干扰消除检测算法球形译码检测算法属于一种次优检测算法&#…...

数据结构与算法之《顺序表》

目录 1.什么是顺序表 顺序表的优势和缺点 顺序表预备知识 顺序表的代码实现 顺序表头部插入 顺序表的销毁 顺序表的头删 顺序表的尾删 顺序表的尾插 顺序表的任意位置插入 顺序表的查找 顺序表的打印 1.什么是顺序表 这篇文章我们来讲一下基础数据结构的顺序表&…...

MySQL索引15连问,抗住!

1. 索引是什么&#xff1f;索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录&#xff0c;可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中&#xff0c;它是占用物理空间的。正所谓水能载舟&#xff0c;也能覆舟。适当的索引能提高查询效率&#x…...

【服务器管理】手动部署LNMP环境(CentOS 8)(非阿里云版本)

简述 如果是你是阿里云的服务器&#xff0c;我推荐你看引用的文章&#xff0c;本文也是参考了很多这篇文章的内容。 https://help.aliyun.com/document_detail/173042.htm 系统版本&#xff1a; CentOS 8 其实CentOS 7的版本可能更好安装一点&#xff0c;但是我有个服务推荐使…...

论文笔记:Positive-incentive Noise

2022 TNNLS 中心思想是&#xff1a;噪声并不一定是有害的 1 CV问题中的噪声 以图像分类为例 对图像加入适量的噪声后再训练&#xff0c;识别准确率反而上升了 再以目标检测为例&#xff1a; 从遥感影像中做飞机检测&#xff0c;一般都是把飞机紧紧框住&#xff0c;然后做…...

340秒语音芯片,轻松实现语音交互,畅享智能生活WTV380语音ic方案

随着智能家居、安防报警、宠物用品 等&#xff0c;智能设备的普及&#xff0c;语音交互技术正在逐渐成为人机交互的主要方式之一。而如何实现稳定高效的语音交互&#xff0c;就需要借助先进的语音芯片技术。今天&#xff0c;我们介绍的是一款高性能的语音芯片——WTV380&#x…...

有java基础学习大数据该如何规划

大数据开发对于Java语言的依赖程度比较高&#xff0c;如果想尝试大数据开发&#xff0c;学习过Java语言就很容易上手 Java是目前使用广泛的编程语言之一&#xff0c;具有的众多特性&#xff0c;特别适合作为大数据应用的开发语言。 目前很多大数据开发团队都在使用Java语言&a…...

【Java基础】HashMap的底层数据结构是怎样的?

HashMap就是以Key-Value的方式进行数据存储的一种数据结构。 HashMap在jdk1.7之前和jdk1.8之后的底层数据结构是不一样的。 在jdk1.7之前是数组链表的形式&#xff0c;并通过entry节点保存key和value值&#xff1b;当Hash冲突比较严重的时候&#xff0c;在数组上形成的链表就会…...

MongoDB5副本集高可用集群部署

MongoDB5副本集高可用集群部署 1.MongoDB简介 MongoDB官方网站&#xff1a;https://www.mongodb.com ​ MongoDB最大的特点是表结构灵活可变&#xff0c;字段类型可以随时修改。MongoDB中的每一行数据只是简单的被转化成Json格式后存储&#xff0c;因此MongoDB中没有MySQL中表…...

【Java】最新版本SpringCloudStream整合RocketMQ实现单项目中事件的发布与监听

文章目录前言依赖配置代码参考前言 SpringCloud项目中整合RocketMQ是为了削峰填谷。 这里我使用RocketMQ的作用用于接收项目中产生的消息&#xff0c;然后异步的发送邮件给客户&#xff0c;这是这个项目的产生的背景。 依赖配置 <dependencies><dependency><…...

abp.net 5.0 部署IIS10

今天遇到了abp.net 5.0部署iis10被卡住的问题&#xff0c;网上找了一些资料&#xff0c;都不是我要的&#xff0c;最后我总结一下我用的是 5.0的版本&#xff0c;所以我需要给服务器安装 iis5.0的相关运行环境 1&#xff1a;https://dotnet.microsoft.com/zh-cn/download/dotne…...

Windows安装Qt与VS2019添加QT插件

一、通过Qt安装包方式http://download.qt.io/archive/qt/5.12/5.12.3/.安装可以就选中这个MSVC 2017 64-bit&#xff0c;其他就暂时不用了二、通过vs2019安装Qt插件方式方法1下面这种方式本人安装不起来&#xff0c;一直卡住下不下来。拓展->管理拓展->联机->搜索Qt&a…...

自学大数据第5天~hadoop集群搭建(二)

配置集群/分布式环境 1,修改文件workers 需要把所有节点数据节点的主机名写入该文件,每行一个,默认localhost(即把本机(namenode也作为数据节点),所以我们在伪分布式是没有配置该文件; 在进行分布式时需要删掉localhost(又可能文件中没有该配置,没有那就不用删了,配置一下数据…...

MySQL (六)------MySQL的常用函数、 事务(TCL)、DCL用户操作语句、常见环境、编码问题

第一章 MySQL的常用函数 1.1 字符串函数 1.1.1 字符串函数列表概览 函数用法CONCAT(S1,S2,......,Sn)连接S1,S2,......,Sn为一个字符串CONCAT_WS(separator, S1,S2,......,Sn)连接S1一直到Sn&#xff0c;并且中间以separator作为分隔符CHAR_LENGTH(s)返回字符串s的字符数LENGTH…...

【3.8】操作系统内存管理、Redis数据结构、哈希表

内存满了&#xff0c;会发生什么&#xff1f; 当应用程序读写了这块虚拟内存&#xff0c;CPU 就会去访问这个虚拟内存&#xff0c; 这时会发现这个虚拟内存没有映射到物理内存&#xff0c; CPU 就会产生缺页中断&#xff0c;进程会从用户态切换到内核态&#xff0c;并将缺页中…...

Shell编程:轻松掌握入门级Shell脚本,成为Shell高手

文章目录前言一. 实验环境二. shell基础入门精讲2.1 什么是shell脚本&#xff1f;2.2 shell的种类2.3 脚本案例2.3.1 打印 hello-word案例2.3.2 统计指定目录下的文件数和目录数2.4 shell脚本编写规范总结前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人…...

FastApi的搭建与测试

一、fastapi的安装 1-1、使用pip安装 安装fastapi的语句 pip install fastapi -i https://mirrors.aliyun.com/pypi/simple因为fastapi启动依赖于uvicorn&#xff0c;所以我们还需要安装uvicorn。 pip install uvicorn -i https://mirrors.aliyun.com/pypi/simple下面我们来…...

C++基础——C++面向对象之重载与多态基础总结(函数重载、运算符重载、多态的使用)

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…...

调用一个函数时发生了什么?

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 用C语言写代码&#xff0c;如果一个工程相对复杂时&#xff0c;我们往往会采取封装函数的方式。在主函数中调用函数 这一看似简单的过程&#xff0c;实际上有很多不宜观察的细节&#xff0…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...