嵌入式web 服务器boa的编译和移植

编译环境:虚拟机 ubuntu 18.04

目标开发板:飞凌OKA40i-C开发板, Linux3.10 操作系统

开发板本身已经移植了boa服务器,但是在使用过程中发现POST方法传输大文件时对数据量有限制,超过1M字节就无法传输,这是源码默认的,为了解除这个限制需要修改源码并重新编译和移植。

1、源码下载

Boa Webservericon-default.png?t=N7T8http://www.boa.org/从官方网站下载最新版本源码包boa-0.94.13.tar.gz,执行解压命令

    tar -xvf boa-0.94.13.tar.gz

 2、修改源码

进入源码src目录,执行./configure,生成Makefile,修改Makefile

CC=arm-linux-gnueabihf-gcc-5.3.1
CPP=arm-linux-gnueabihf-gcc-5.3.1 -E

  (1)修改 src/defines.h

修改宏定义为100M
#define SINGLE_POST_LIMIT_DEFAULT 100 * 1024 * 1024

  (2)修改 src/compact.h

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 
修改为 
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

(3)修改 src/log.c

if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}
修改为
/*if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}*/

(4)修改 src/boa.c

if (passwdbuf == NULL) {DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {DIE(”initgroups”);
}
修改为
/*
if (passwdbuf == NULL) {DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {DIE(”initgroups”);
}
*/

继续向下修改

if (setuid(0) != -1) {DIE("icky Linux kernel bug!");
}
修改为
/* if (setuid(0) != -1) {DIE("icky Linux kernel bug!");}*/

3、编译

在src目录下执行make命令生成boa可执行程序,将可执行程序替换掉usr/sbin目录下原来的boa,重新运行boa即可完成移植。如果是初次编译移植,需要对配置文件boa.conf做一些符合自身需要的修改,并拷贝到板子的/etc/boa目录下。

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

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

相关文章

嵌入式linux获取RGB图片不清晰问题

1.RGB摄像头都是同一个厂家的usb接口的摄像头,接入我们设备上面,应用层通过v4l2框架获取到的JPEG图片不清晰,应用层没有对图片做任何转换,也尝试过获取YUV图片,依然不清晰。 2.相同的USB摄像头,接入windows…

Java 面试题篇 Sleep()方法与Wait() 方法的区别

在 Java 中,sleep() 和 wait() 方法都可以用来控制线程的执行顺序或等待特定条件的发生,但它们有着不同的使用场景和行为: 1. sleep() - sleep() 方法来自于 Thread 类,用于让当前线程暂停执行一段时间,以毫秒为单位。…

Nginx-Rewrite

1、Rewrite的定义 rewrite功能就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在 server { }, location { }, if { }中,并且只能对域名后边的除去传递的参数外的字符串起作用。 例如location…

进阶必看,3种灵活操作PyTorch张量的高级方法

大家好,在PyTorch中进行高级张量操作时,开发者经常面临这样的问题,如何根据一个索引张量从另一个张量中选取元素。 例如有一个包含数千个特征的大规模数据集,需要根据特定的索引模式快速提取信息。本文将介绍三种索引选择方法来解…

评估 RAG?只要大模型框架 LlamaIndex 就足够了

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

matlab编写微分方程椭圆型方程(一维形式)

文章目录 理论编程实例原代码 理论 椭圆型方程一维格式即常微分方程,边值问题,方程如下所示: 截断误差: 当 h → ∞ h\rightarrow\infty h→∞时,截断误差趋于零,离散方程组成立, 写成矩阵&…

鸿蒙小案例-短视频

参加泡泡玛特写了个小demo,然后给它稍微完善了一下 基于API11 演示效果 hfvideo演示视频 主要功能集中在4个tab页内 1.首页-视频播放页 2.朋友-关注、朋友、粉丝聚合 3.消息-聊天列表 4.我的-当前用户信息展示 主页页面 1.用户主页 2.聊天页面 3.朋友页面 4.视频播放页 因为不…

Clickhouse集群_ 双副本配置下Replicatedmergetree引擎的表在一个节点被删除后会自动恢复吗

2分片双副本的配置:1,2,3,4节点,分片1落在1,2节点, 1,2节点互为对方的副本,分片2落在3,4节点, 3,4节点互为对方的副本 replicatedmergetree引擎的表在一个节点被删除后,虽然另一个节点还有它的副本,但是这个副本不过同…

闲置资源共享平台

摘 要 随着共享经济的高速发展以及人们对物品的需求方面也越来也丰富,而且各大高校的大学生们的购买力也越来越强,随之而来的问题就是身边的闲置资源也越来越多,但是也有许多的大学生对物品的要求方面不是很高,也愿意买下经济实惠…

【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验

一、DNS模拟器实验 拓扑图 1. 服务器ip 2. 服务器填写记录 3. 客户端ip以及连接到DNS服务器 4. ping测试

hadoop Yarn资源调度器

概述 Yarn是一个资源调度平台,负责为运算程序提供服务器资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序相当于操作系统之上的应用程序 Yarn基本架构 YARN 主要由ResourceManager、NodeManager、ApplicationMaster、Container …

Gone框架介绍29 - 在Gone中使用gRPC通信

gone是可以高效开发Web服务的Golang依赖注入框架 github地址:https://github.com/gone-io/gone 文档地址:https://goner.fun/zh/ 文章目录 使用gRPC通信编写proto文件,生成golang代码编写服务端代码注册客户端编写配置文件测试总结 使用gRPC通…

C++基础编程100题-010 OpenJudge-1.3-08 温度表达转化

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/08/ 描述 利用公式 C 5 * (F-32) / 9 (其中C表示摄氏温度,F表示华氏温度) 进行计算转化。 输入 输入一行,包含一个实数f,表示华氏温度。&…

Linux常见的压缩文件种类与对应的压缩解压方法

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

超详细的selenium使用指南

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 概述 selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器…

06 PXE高效批量网络装机

目录 6.1 部署PXE远程安装服务 6.1.1 搭建PXE远程安装服务器 1. 准备CentOS 7安装源 2. 安装并启用TFTP服务 3. 准备Linux内核、初始化镜像文件 4. 准备PXE引导程序 5. 安装并启用DHCP服务 6. 配置启动菜单文件 6.1.2 验证PXE网络安装 6.2 实现Kickstart无人值守安装 6.2.1 准…

STM32学习记录(八)————定时器输出PWM及舵机的控制

文章目录 前言一、PWM1.工作原理2.内部运作机制3. PWM工作模式4.PWM结构体及库函数 二、PWM控制舵机 前言 一个学习STM32的小白~ 有错误评论区或私信指出提示:以下是本篇文章正文内容,下面案例可供参考 一、PWM 1.工作原理 以向上计数为例&#xff0…

spark 整合 yarn

spark 整合 yarn 1、在master节点上停止spark集群 cd /usr/local/soft/spark-2.4.5/sbin ./stop-all.sh 2、spark整合yarn只需要在一个节点整合, 可以删除node1 和node2中所有的spark文件 分别在node1、node2 的/usr/local/soft目录运行 rm -rf spark-2.4.…

力扣469A

文章目录 1. 题目链接2. 题目代码3. 题目总结4. 代码分析 1. 题目链接 I Wanna Be the Guy 2. 题目代码 #include<iostream> #include<set> using namespace std; int main(){int highestLevelOfGame;cin >> highestLevelOfGame;set<int> levelCanPas…

Linux下Cmake安装或版本更新

下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…