空間怎么做網(wǎng)站代發(fā)新聞稿最大平臺
編譯環(huán)境:虛擬機 ubuntu 18.04
目標開發(fā)板:飛凌OKA40i-C開發(fā)板,?Linux3.10 操作系統(tǒng)
開發(fā)板本身已經(jīng)移植了boa服務(wù)器,但是在使用過程中發(fā)現(xiàn)POST方法傳輸大文件時對數(shù)據(jù)量有限制,超過1M字節(jié)就無法傳輸,這是源碼默認的,為了解除這個限制需要修改源碼并重新編譯和移植。
1、源碼下載
Boa Webserverhttp://www.boa.org/從官方網(wǎng)站下載最新版本源碼包boa-0.94.13.tar.gz,執(zhí)行解壓命令
tar -xvf boa-0.94.13.tar.gz
?2、修改源碼
進入源碼src目錄,執(zhí)行./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”);
}
*/
繼續(xù)向下修改
if (setuid(0) != -1) {DIE("icky Linux kernel bug!");
}
修改為
/* if (setuid(0) != -1) {DIE("icky Linux kernel bug!");}*/
3、編譯
在src目錄下執(zhí)行make命令生成boa可執(zhí)行程序,將可執(zhí)行程序替換掉usr/sbin目錄下原來的boa,重新運行boa即可完成移植。如果是初次編譯移植,需要對配置文件boa.conf做一些符合自身需要的修改,并拷貝到板子的/etc/boa目錄下。