移植rv1106SDK的ipcweb到ubuntu

移植minilogger

在sdk中找到minilogger,复制到任意的文件夹,执行

cmake ./
make
make install

把minilogger 安装到系统

修改Makefile

在上次那个基础上,修改Makefile


#* 这里原来要包含../Makefile.param,但含有sdk的很多参数,放弃
#*ifeq ($(APP_PARAM), )
#*    APP_PARAM:=../Makefile.param
#*    include $(APP_PARAM)
#*endifexport LC_ALL=C
SHELL:=/bin/bashCURRENT_DIR := $(shell pwd)
#* 取消这个项,不用安装不用复制
#* PKG_INSTALL_TO_ROOTFS ?= NO
PKG_NAME := ipcweb-backend
PKG_BIN ?= out
PKG_BUILD ?= build
#* RK_APP_ARCH_TYPE在Makefile.param里面定义 Makefile.param RK_APP_ARCH_TYPE:=arm
RK_APP_ARCH_TYPE:=arm
PKG_TARBALL := ipcweb-backend/ipcweb-env-$(RK_APP_ARCH_TYPE)
PKG_TARPATH ?= $(PKG_BIN)/
# debug: build cmake with more message
# PKG_CONF_OPTS += -DCMAKE_VERBOSE_MAKEFILE=ON
##* RK_APP_MEDIA_INCLUDE_PATH 是sdk里面media的头文件路径,放弃
#* RK_APP_CFLAGS = -I $(RK_APP_MEDIA_INCLUDE_PATH) \
#* 				-I $(CURRENT_DIR)/$(PKG_TARPATH)/include \#* 只包含out文件夹里面的include
RK_APP_CFLAGS = -I $(CURRENT_DIR)/$(PKG_TARPATH)/includeRK_APP_LDFLAGS = -L $(CURRENT_DIR)/$(PKG_TARPATH)/usr/lib/#* RK_APP_OPTS 也是sdk里面的库和头文件路径,放弃
#* RK_APP_OPTS += -Wl,-rpath-link,$(RK_APP_MEDIA_LIBS_PATH):$(RK_APP_PATH_LIB_INCLUDE)/root/usr/lib
PKG_CONF_OPTS += -DCMAKE_C_FLAGS="$(RK_APP_CFLAGS) $(RK_APP_LDFLAGS) $(RK_APP_OPTS) -g -O0" \-DCMAKE_CXX_FLAGS="$(RK_APP_CFLAGS) $(RK_APP_LDFLAGS) $(RK_APP_OPTS) -g -O0"# define project/cfg/BoardConfig*.mk#* RK_APP_IPCWEB_BACKEND 是编译开关
RK_APP_IPCWEB_BACKEND = y
ifeq ($(RK_APP_IPCWEB_BACKEND),y)
PKG_TARGET := ipcweb-build
endififeq ($(PKG_BIN),)
$(error ### $(CURRENT_DIR): PKG_BIN is NULL, Please Check !!!)
endifall: $(PKG_TARGET)@echo "build $(PKG_NAME) done"ipcweb-build:@rm -rf $(PKG_BIN) $(PKG_TARPATH) && mkdir -p $(PKG_TARPATH) $(PKG_BIN) $(PKG_BUILD);@cp -rfa $(PKG_TARBALL)/include $(PKG_TARPATH)/;@cp -rfa $(PKG_TARBALL)/usr $(PKG_TARPATH)/;@echo "PKG_TARPATH is $(PKG_TARPATH)";
#*  修改gcc和g++	pushd $(PKG_BUILD)/; \rm -rf CMakeCache.txt; \cmake $(CURRENT_DIR)/$(PKG_NAME)/ \-DCMAKE_C_COMPILER=gcc \-DCMAKE_CXX_COMPILER=g++ \-DCMAKE_INSTALL_PREFIX="$(CURRENT_DIR)/$(PKG_BIN)" \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_COLOR_MAKEFILE=OFF \-DCMAKE_SYSTEM_NAME=Linux \-DUSE_RKIPC=ON \$(PKG_CONF_OPTS) ;\make -j6 || exit -1; \make install; \popd;(mkdir -p $(PKG_BIN)/usr;mv $(PKG_BIN)/www $(PKG_BIN)/usr;);#* 因为在ubuntu上运行,所以不需要安装到rootfs,也不需要把配置复制。
#* ifeq ($(PKG_INSTALL_TO_ROOTFS),YES)
#* 	@cp -rfa $(PKG_TARBALL)/etc $(PKG_TARPATH)/;
#* 	@cp -rfa $(PKG_TARBALL)/usr $(PKG_TARPATH)/;
#* else
#* 	@cp -rfa $(PKG_TARBALL)/etc4oem $(PKG_TARPATH)/etc
#* endif
#*这两项安装的放弃
#*	@test ! -d $(PKG_BIN)/root/include || mv $(PKG_BIN)/root/include $(PKG_BIN)/;
#*	$(call MAROC_COPY_PKG_TO_APP_OUTPUT, $(RK_APP_OUTPUT), $(PKG_BIN))clean:@rm -rf $(PKG_BIN) $(PKG_BUILD) $(PKG_TARPATH)distclean: clean
C_BLACK  = \e[30;1m
C_RED    = \e[31;1m
C_GREEN  = \e[32;1m
C_YELLOW = \e[33;1m
C_BLUE   = \e[34;1m
C_PURPLE = \e[35;1m
C_CYAN   = \e[36;1m
C_WHITE  = \e[37;1m
C_NORMAL = \033[0m
info:
ifeq ($(RK_APP_IPCWEB_BACKEND),y)@echo -e "$(C_YELLOW)-------------------------------------------------------------------------$(C_NORMAL)"@echo -e "$(C_YELLOW)-------------------------------------------------------------------------$(C_NORMAL)"
endif

修改 ipcweb-backend/CMakeLists.txt

修改ipcweb-backend/CMakeLists.txt,增加对MiniLogger支持

#
# Copyright 2019 Fuzhou Rockchip Electronics Co., Ltd. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
cmake_minimum_required(VERSION 3.5)list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
project(ipcweb-backendLANGUAGES CXX)
set(DESCRIPTION "IP Camera web backend cgi projects")option(IPCWEBBACKEND_BUILD_TESTS  "Build tests executables" OFF)
option(ENABLE_JWT  "enbale jwt" OFF)
option(MEDIASERVER_ROCKFACE  "enbale mediaserver rockface" OFF)
option(USE_RKIPC  "use rkipc" OFF)set(PROJECT_THIRDPARTY_DIR "${CMAKE_SOURCE_DIR}/thirdparty")
include(clang-format)
include(cppcheck)if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR NOT DEFINED CMAKE_SYSTEM_PROCESSOR)message(FATAL_ERROR "This project can only be built for linux")
endif()set(TARGET_HOST ${CMAKE_SYSTEM_PROCESSOR}-linux)if (${USE_RKIPC})
#find_package(jwt_cpp REQUIRED)
find_package(MiniLogger REQUIRED)
else()
find_package(MiniLogger REQUIRED)
find_package(Cgicc)
find_package(nlohmann_json REQUIRED)
find_package(jwt_cpp REQUIRED)
find_package(OpenSSL REQUIRED)
endif()include(GNUInstallDirs)
if (${IPCWEBBACKEND_BUILD_TESTS})enable_testing()add_subdirectory(thirdparty/googletest)add_subdirectory(test)
endif()
if (${ENABLE_JWT})add_definitions(-DENABLE_JWT)
endif()
if (${MEDIASERVER_ROCKFACE})add_definitions(-DMEDIASERVER_ROCKFACE)
endif()
if (${USE_RKIPC})add_definitions(-DUSE_RKIPC "-fno-rtti -fno-exceptions -Os")
endif()
add_subdirectory(src)

修改ipcweb-backend/src/rest_api.h

修改ipcweb-backend/src/rest_api.h使用minilogger

// *改为1使用mimilogger
#if 1
#include "minilogger/backtrace.h"
#include "minilogger/log.h"
#else
#define minilog_warn(...)
#define minilog_error(...)
#define minilog_info(...)
#define minilog_debug(...)
#define __minilog_log_init(...)
#endif

更改ipcweb-backend/src/system_api.c

强制status返回0, auth返回1, 注意,第一个才是使用#ifdef USE_RKIPC 为真的

  //res.emplace("status", id_mark);//res.emplace("auth", 0);res.emplace("status", 0);res.emplace("auth", 1);

编译

在顶层文件夹中make

设置nginx的位置

server {listen       80;server_name  localhost;#       location /live {
#               flv_live on;
#       }#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   ~/ipcweb/out/usr/www;index  index.html index.htm;}location ~* \.(mp4|bmp)$  {root /usr/www;if ($request_uri ~* view$) {add_header Content-Disposition inline;}if ($request_uri !~* view$) {add_header Content-Disposition attachment;}}# error_page  404              /404.html;error_page  404              /;# redirect server error pages to the static page /50x.html## error_page   500 502 503 504  /50x.html;# location = /50x.html {#     root   html;# }location /cgi-bin/ {gzip           off;root           ~/ipcweb/out/usr/www;fastcgi_pass   unix:/var/run/fcgiwrap.socket;fastcgi_index  entry.cgi;fastcgi_param  DOCUMENT_ROOT     unix:/var/run/fcgiwrap.socket/cgi-bin;fastcgi_param  SCRIPT_NAME       /entry.cgi;include        fastcgi_params;set $path_info "";set $real_script_name $fastcgi_script_name;if ($fastcgi_script_name ~ "^(.+?\.cgi)(/.+)$") {set $real_script_name $1;set $path_info $2;}fastcgi_param PATH_INFO       $path_info;fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;fastcgi_param SCRIPT_NAME     $real_script_name;}

把nginx的根目录盒cgi目录设置为新编译好文件的位置

安装 fcgiwrap

sudo apt-get install fcgiwrap
sudo systemctl start fcgiwrap

重启 nginx

sudo systemctl restar nginx

登录测试

进到登录页面以后,输入任意的账号密码都能进入系统
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458374.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

w003基于Springboot的图书个性化推荐系统的设计与实现

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Mysql(十) --- 用户权限和管理

文章目录 前言1. 应用场景2.用户2.1. 查看用户2.2. 创建用户2.2.1 语法2.2.2. 注意事项 2.2.3.示例2.3. 修改密码2.3.1. 语法2.3.2. 示例 2.4.删除用户2.4.1.语法2.4.2.示例 3. 权限和授权MySQL内置支持的权限列表3.1.给用户授权3.1.1.语法3.1.2. 示例 3.2.回收权限3.2.1.语法3…

Golang Agent 可观测性的全面升级与新特性介绍

作者:张海彬(古琦) 背景 自 2024 年 6 月 26 日,ARMS 发布了针对 Golang 应用的可观测性监控功能以来,阿里云 ARMS 团队与程序语言与编译器团队一直致力于不断优化和提升该系统的各项功能,旨在为开发者提…

基于SpringBoot的中药材进存销管理系统设计与实现

摘要 中药材进存销管理系统是为了满足中药材生产和销售企业的高效管理需求,涵盖了药材采购、库存管理和销售跟踪等主要功能。本系统采用Spring Boot框架进行开发,结合了前端和数据库设计,构建了一个实用的中药材管理平台,为企业提…

游戏服务器被攻击有办法防护吗

游戏服务器受到攻击时比较常见的。就算是刚上线的游戏,都会有被攻击的时候。游戏服务器受到攻击的原因以及解决方案有哪些呢? 游戏服务器被攻击的原因有哪些呢? 1、常见的攻击,大部分来自于同行之间的恶意竞争,你的游…

【QT】Qt窗口(上)

个人主页~ Qt窗口 一、菜单栏二、工具栏三、状态栏四、浮动窗口 Qt窗口是通过QMainWindow类来实现的,我们之前的学习是通过QWidget类实现的 QMainWindow包含一个菜单栏Menu Bar②,多个工具栏Tool Bars③,多个浮动窗口Dock Widgets&#xff0c…

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer, 已经修改完成一版放在了目录下,window和linux下编译都成功了,不过由于修改代码CMakefile 需要修改,先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后,vlc 依然能…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode(独立服务器模式) 2、two server mode(双服务器模式) 3、distributed multiple-executor mode(分布式多…

【Rust】环境搭建

▒ 目录 ▒ 🛫 导读需求 1️⃣ 安装Chocolatey安装依赖 2️⃣ 安装RustRover安装toolchain(rustup、VS)重启配置生效设置安装插件 📖 参考资料 🛫 导读 需求 重装系统,记录下环境搭建遇到的问题。 1️⃣ …

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…

如何制定有效的学习计划

文章目录 第一章:目标设定1.1 目标的重要性1.2 SMART原则1.3 目标设定公式 第二章:时间管理2.1 时间的重要性2.2 制定时间表2.3 时间管理公式2.4 番茄工作法2.5 时间分配公式 第三章:学习策略3.1 学习方法3.2 学习材料的选择3.3 学习效果公式…

量子计算突破:下一个科技革命的风口浪尖在哪里?

内容概要 在当今科技飞速发展的时代,量子计算如同一颗璀璨的明珠,正闪烁着无尽的可能性。它不仅是解决科学难题的钥匙,更是即将引领科技革命的先锋。如今,随着技术的不断突破,量子计算已经步入了一个崭新的阶段。想象…

【ZZULI】数据库第二次实验

【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…

iOS静态库(.a)及资源文件的生成与使用详解(OC版本)

引言 iOS静态库(.a)及资源文件的生成与使用详解(Swift版本)_xcode 合并 .a文件-CSDN博客 在前面的博客中我们已经介绍了关于iOS静态库的生成步骤以及关于资源文件的处理,在本篇博客中我们将会以Objective-C为基础语言…

实验:使用Oxygen发布大型手册到Word格式

此前,我曾发表过一篇文章《结构化文档发布的故事和性能调优》,文中讨论了在将大型DITA手册转换为PDF格式时可能遇到的性能挑战及相应的优化策略。 近日,有朋友咨询,若将同样的大型手册输出为MS Word格式,是否也会面临…

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书,今天分享下如何用Rust做电子书。制作电子书其实用途广泛,不仅可以用于技术文档(对技术人来说非常方便),也可以制作用户手册、笔记、教程等,还可以应用于文学创作。 如果…

Python应用指南:利用高德地图API实现路径规划

高德路径规划API是一套基于HTTP协议的接口服务,旨在为开发者提供便捷的路径规划解决方案。该API支持多种出行方式,包括步行、公交和驾车,能够满足不同场景下的路径查询需求。通过调用这些API,用户可以获得从起点到终点的最优路径建…

【Web.路由】——路由原理

这篇文章,我们来讲一讲什么是路由。 路由是 将用户请求地址映射为一个请求委托的过程,负责匹配传入的Http请求,然后将这些请求发送到应用的可执行终结点。 这里需要注意一个内容,发送到应用的可执行终结点。 路由的分类&#x…

大模型落地,要追求极致的务实主义

图源:AI生成 ▎****更快用上最新的大模型,是不是就赢定了? “能够像人类一样操作电脑。”这一堪称革命性的新技能来自10月23日Anthropic最新推出的升级版Claude 3.5 Sonnet模型,据介绍该模型不仅各项性能指标上取得显著提升&…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…