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

嵌入式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目录下。

相关文章:

  • 探索Linux的奇妙世界:第二关---Linux的基本指令1
  • React框架的来龙去脉,react的技术原理及技术难点和要点,小白的进阶之路
  • IOS Swift : 从入门到精通结构、属性和方法 结构体,第一部分
  • 生产管理系统看板,在自动化设备领域的创新应用
  • Vue3 - 在项目中使用vue-i18n不生效的问题
  • 江协科技51单片机学习- p11 静态数码管显示
  • DbConnectionStringParser
  • SpringBoot 快速入门(保姆级详细教程)
  • 迈巴赫S480升级增强现实AR抬头显示hud比普通抬头显示HUD更好用吗
  • 如何基于Redis实现分布式锁?
  • 物理层(二)
  • 华为HCIP Datacom H12-821 卷6
  • Chromium 开发指南2024 Mac篇-开始编译Chromium(五)
  • 【LinuxC语言】进程间的通信——管道
  • a multiple definition link error when using gcc10.3.1
  • 【React系列】如何构建React应用程序
  • 4个实用的微服务测试策略
  • css选择器
  • Docker入门(二) - Dockerfile
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • If…else
  • Java多线程(4):使用线程池执行定时任务
  • mysql外键的使用
  • oschina
  • PHP变量
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue.js框架原理浅析
  • yii2中session跨域名的问题
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 回顾2016
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 一、python与pycharm的安装
  • MyCAT水平分库
  • postgresql行列转换函数
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​520就是要宠粉,你的心头书我买单
  • #微信小程序(布局、渲染层基础知识)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (二)测试工具
  • (蓝桥杯每日一题)love
  • (算法)大数的进制转换
  • (五)网络优化与超参数选择--九五小庞
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET DataGridView数据绑定说明
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net下的富文本编辑器FCKeditor的配置方法
  • @SpringBootApplication 包含的三个注解及其含义