Appweb-7.2.3交叉编译支持html

本文介绍Appweb-7.2.3交叉编译支持HTML的详细过程。环境为Ubuntu1604,使用4.8的Android编译链。包括从官网或码云获取源码、修改3个文件、编译、拷贝执行文件和库、增加权限,最后配置appweb.conf文件,访问IP可跳转页面。

Appweb-7.2.3交叉编译支持html

环境:Ubuntu1604
编译链:4.8的Android编译链
Appweb源码:appweb-src.tgz
Android模块:RK3288

一、官网下载源码并解压源码(注意官网下载的是社区版,功能有阉割,像Building with FastCGI, Building with Proxy,Building with PHP,都没有,但跑个html还是没有问题的)
也可以克隆我在码云上的开源项目,地址https://gitee.com/huangriwang/appweb7.2.git

tar -xjvf appweb-src.tgz
cd appweb-7.2.3

二、修改文件,一共需要修改3个文件(appweb-linux-default.mk,appweb-linux-default-me.h,mprLib.c)
1.修改appweb-7.2.3\projects\appweb-linux-default.mk文件
……
NAME := appweb
VERSION := 7.2.3
PROFILE ?= default
ARCH ?= arm
CC_ARCH ?= arm
OS ?= linux
CC := arm-linux-androideabi-gcc
AR := arm-linux-androideabi-ar
CONFIG ?= (OS)−(OS)-(OS)(ARCH)-(PROFILE)BUILD?=build/(PROFILE) BUILD ?= build/(PROFILE)BUILD?=build/(CONFIG)
……
ME_COM_MDB := 1
endif

#android 4.4 之后需要支持PIE -pie -fPIE
CFLAGS += -pie -fPIE

CFLAGS += -fPIC -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Wl,-z,relro,-z,now -Wl,–as-needed -Wl,–no-copy-dt-needed-entries -Wl,-z,noexecstatck -Wl,-z,noexecheap -w
DFLAGS += -D_REENTRANT -DPIC (patsubst(patsubst %,-D%,(patsubst(filter ME_%,(MAKEFLAGS)))−DMECOMCGI=(MAKEFLAGS))) -DME_COM_CGI=(MAKEFLAGS)))DMECOMCGI=(ME_COM_CGI) -DME_COM_COMPILER=(MECOMCOMPILER)−DMECOMDIR=(ME_COM_COMPILER) -DME_COM_DIR=(MECOMCOMPILER)DMECOMDIR=(ME_COM_DIR) -DME_COM_EJS=(MECOMEJS)−DMECOMESP=(ME_COM_EJS) -DME_COM_ESP=(MECOMEJS)DMECOMESP=(ME_COM_ESP) -DME_COM_HTTP=(MECOMHTTP)−DMECOMLIB=(ME_COM_HTTP) -DME_COM_LIB=(MECOMHTTP)DMECOMLIB=(ME_COM_LIB) -DME_COM_MATRIXSSL=(MECOMMATRIXSSL)−DMECOMMBEDTLS=(ME_COM_MATRIXSSL) -DME_COM_MBEDTLS=(MECOMMATRIXSSL)DMECOMMBEDTLS=(ME_COM_MBEDTLS) -DME_COM_MDB=(MECOMMDB)−DMECOMMPR=(ME_COM_MDB) -DME_COM_MPR=(MECOMMDB)DMECOMMPR=(ME_COM_MPR) -DME_COM_NANOSSL=(MECOMNANOSSL)−DMECOMOPENSSL=(ME_COM_NANOSSL) -DME_COM_OPENSSL=(MECOMNANOSSL)DMECOMOPENSSL=(ME_COM_OPENSSL) -DME_COM_OSDEP=(MECOMOSDEP)−DMECOMPCRE=(ME_COM_OSDEP) -DME_COM_PCRE=(MECOMOSDEP)DMECOMPCRE=(ME_COM_PCRE) -DME_COM_PHP=(MECOMPHP)−DMECOMSSL=(ME_COM_PHP) -DME_COM_SSL=(MECOMPHP)DMECOMSSL=(ME_COM_SSL) -DME_COM_VXWORKS=(MECOMVXWORKS)−DMECOMWATCHDOG=(ME_COM_VXWORKS) -DME_COM_WATCHDOG=(MECOMVXWORKS)DMECOMWATCHDOG=(ME_COM_WATCHDOG)
PIEFLAGS = -pie -fPIE
IFLAGS += "-IKaTeX parse error: Double superscript at position 51: …+= '-rdynamic' '̲-Wl,--enable-ne…ORIGIN/′库直接拷贝到/system/lib/里面使用的,如果带了这个参数会导致DT错误。LIBPATHS+=−LORIGIN/' 库直接拷贝到/system/lib/里面使用的,如果带了这个参数会导致DT 错误。 LIBPATHS += -LORIGIN//system/lib/使DTLIBPATHS+=L(BUILD)/bin
LIBS += -ldl -lm 删除-lpthread -lrt arm不需要这个库

DEBUG ?= debug
CFLAGS-debug ?= -g
……
$(BUILD)/bin/appweb: $(DEPS_47)
@echo ’ [Link] $(BUILD)/bin/appweb’
$(CC) -o $(BUILD)/bin/appweb $(PIEFLAGS) $(LDFLAGS) (LIBPATHS)"(LIBPATHS) "(LIBPATHS)"(BUILD)/obj/appweb.o" $(LIBPATHS_47) $(LIBS_47) $(LIBS_47) $(LIBS) $(LIBS)
……
$(BUILD)/bin/authpass: $(DEPS_48)
@echo ’ [Link] $(BUILD)/bin/authpass’
$(CC) -o $(BUILD)/bin/authpass $(PIEFLAGS) $(LDFLAGS) (LIBPATHS)"(LIBPATHS) "(LIBPATHS)"(BUILD)/obj/authpass.o" $(LIBPATHS_48) $(LIBS_48) $(LIBS_48) $(LIBS) $(LIBS)
……
$(BUILD)/bin/appweb-esp: $(DEPS_49)
@echo ’ [Link] $(BUILD)/bin/appweb-esp’
$(CC) -o $(BUILD)/bin/appweb-esp $(PIEFLAGS) $(LDFLAGS) (LIBPATHS)"(LIBPATHS) "(LIBPATHS)"(BUILD)/obj/esp.o" $(LIBPATHS_49) $(LIBS_49) $(LIBS_49) $(LIBS) $(LIBS)
endif
……
$(BUILD)/bin/http: $(DEPS_51)
@echo ’ [Link] $(BUILD)/bin/http’
$(CC) -o $(BUILD)/bin/http $(PIEFLAGS) $(LDFLAGS) (LIBPATHS)"(LIBPATHS) "(LIBPATHS)"(BUILD)/obj/http.o" $(LIBPATHS_51) $(LIBS_51) $(LIBS_51) $(LIBS) $(LIBS)
Endif
……
$(BUILD)/bin/makerom: $(DEPS_54)
@echo ’ [Link] $(BUILD)/bin/makerom’
$(CC) -o $(BUILD)/bin/makerom $(PIEFLAGS) $(LDFLAGS) (LIBPATHS)"(LIBPATHS) "(LIBPATHS)"(BUILD)/obj/makerom.o" $(LIBPATHS_54) $(LIBS_54) $(LIBS_54) $(LIBS) $(LIBS)

……
$(BUILD)/bin/appman: $(DEPS_56)
@echo ’ [Link] $(BUILD)/bin/appman’
$(CC) -o $(BUILD)/bin/appman $(PIEFLAGS) $(LDFLAGS) (LIBPATHS)"(LIBPATHS) "(LIBPATHS)"(BUILD)/obj/watchdog.o" $(LIBPATHS_56) $(LIBS_56) $(LIBS_56) $(LIBS) $(LIBS)
Endif
……
2.修改:appweb-linux-default-me.h
#ifndef ME_COMPILER_HAS_SYNC64
//#define ME_COMPILER_HAS_SYNC64 1 注释掉这个
#endif

3.\appweb-7.2.3\src\mpr\mprLib.c 增加代码在8765行后面
char *getpass(char *prompt)
{
return “NOT-SUPPORTED”;
}

三、编译
make -f projects/appweb-linux-default.mk
编译无错误会在build目录下生成linux-arm-default目录
可以通过arm-linux-androideabi-strip工具把库和执行文件瘦身

四、拷贝执行
借助adb工具,把编译好的linux-arm-default目录整个拷贝到/data/local/
adb push e:\linux-arm-default /data/local/

把linux-arm-default/bin/ 里面appweb用到的lib文件拷贝到/system/lib/
增加权限:
cp libappweb.so /system/lib/
cp libesp.so /system/lib/
cp libhttp.so /system/lib/
cp libmpr.so /system/lib/
chmod 777 ./appweb
cp libpcre.so /system/lib/ 不能拷贝这个库,这个库有问题的,会引起系统崩溃的。Appweb也不需要拷贝这个动态库。
./appweb --version
在这里插入图片描述

可以打印版本就成功了。

五、配置
修改max-server目录下面appweb.conf文件。
……

Server home directory for Appweb to find configuration files.

Appweb will change directory to this location when it runs.

Home “/vendor/opt/webbox”

Define the logging co

……

WARNING: this may disclose unwanted information. Do not enable in production releases.

ShowErrors on

……
GroupAccount root
UserAccount root
……
Listen 80

SSL/TLS configuration

ListenSecure 4443 # # SECURITY NOTE: you must generate the certificate and key. # Use a decrypted key here so it won't prompt for the password when # the server is restarted. # SSLCertificateFile "/vendor/opt/webbox/bin/self.crt" SSLCertificateKeyFile "/vendor/opt/webbox/bin/self.key" …… # Documents webs

借助adb工具,把拷贝整个max-server 目录整个拷贝到/vendor/opt/webbox/
adb push e:\max-server /vendor/opt/webbox/
adb shell
cd /vendor/opt/webbox/
mv web webs

执行
/vendor/opt/webbox/bin/appweb --config /vendor/opt/webbox/appweb.conf &
在这里插入图片描述

访问访问IP就可以跳转到hello Home page

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值