(OK) port_lighttpd_to_Android——没有基于android 4.4源码
[root@localhost lighttpd-1.4.37]# pwd
/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]# ls /opt/cBPM-android/criteria-lin/lib/libpcre.a
/opt/cBPM-android/criteria-lin/lib/libpcre.a //下面有libpcre.a的编译过程
[root@localhost pcre-8.37]# pwd
/opt/cBPM-android/pcre-8.37
[root@localhost pcre-8.37]# cp pcre.h /opt/cBPM-android/lighttpd-1.4.37/src/
[root@localhost lighttpd-1.4.37]# gedit src/network.c
添加:
#include "sys/un.h>
--------------------------------------问题: sock_addr has no member named un ,解决方法如下:
[root@localhost lighttpd-1.4.37]# gedit config.h
添加:
#define HAVE_SYS_UN_H 1
[root@localhost lighttpd-1.4.37]# make -j5
--------------------------------------
[root@localhost lighttpd-1.4.37]# gedit src/plugin.c
注释掉:
//#include "plugin-static.h"
--------------------------------------
+++++++++++++++++++++++++++++++++++++++++编译 lighttpd-1.4.37,将用到的库静态链接进来
[root@localhost lighttpd-1.4.37]# pwd
/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]#
export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"
export SYSROOT="SYSROOT --pipe -INDK_ROOT/platforms/android-14/arch-arm/usr/include -INDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -ICFLAGS"
export CXXFLAGS="NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -L/opt/cBPM-android/lighttpd-1.4.37/src/.libs -lstlport_static -lgcc -lc"
export CPATH="CPATH/arm-linux-androideabi-cpp"
export CXX="CPATH/arm-linux-androideabi-gcc"
export LD="CPATH/arm-linux-androideabi-ar"
./configure --host="arm-linux-androideabi" --without-bzip2 --without-zlib
--------------------------------------
./configure --host="arm-linux-eabi" --enable-static --disable-shared --without-bzip2 --without-zlib
--------------------------------------
export LDFLAGS="-LSYSROOT --pipe -INDK_ROOT/platforms/android-14/arch-arm/usr/include -INDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -IHTTP["url"] =~ "\.pdf ./lighttpd -t -f /data/data/www/etc/lighttpd/lighttpd.conf -m /system/lib/web-plugin //这行不用
root@mb526:/data/data/webserver # ./lighttpd -t -f /data/data/www/etc/lighttpd/lighttpd.conf
Syntax OK
root@mb526:/data/data/webserver #
如果没问题的话会, 执行结果会显示
Syntax OK
再来就是验证是否web server可以运行了, 用以下指令来启动lighttpd, -m 指明lib的位置
root@mb526:/data/data/webserver # ./lighttpd -D -f /data/data/www/etc/lighttpd/lighttpd.conf -m /data/data/webserver/plugin
在/data/data/www/htdocs 内放一个index.html来测试
-------------------
-------------------
[root@localhost lighttpd-1.4.37]# adb push index.html /data/data/www/htdocs
在 宿主机(笔记本)的浏览器访问: http://192.168.0.101:8000/
输出结果:
------------------------
Hello, lighthttpd on Android!!
------------------------
至此,移植成功。
++++++++++++++++++++++++++++++++++++++++++++++++++
以下是要说明怎么启动cgi (也许google可以找到很多答案, 但是这边是我动手try过后确定可行的方法)
[root@localhost lighttpd-1.4.37]# gedit doc/config/lighttpd.conf
edit lighttpd.conf to add mod_alias plugin. 这个动作是一定要作的, 不然会发现就算之后已经有load mod_cgi, 且对应的conf 都设定了, 但却还是不 work.
-------------------
server.modules = (
"mod_access",
"mod_alias"
)
.....
.....
include "conf.d/cgi.conf"
-------------------
[root@localhost lighttpd-1.4.37]# adb push doc/config/lighttpd.conf /data/data/www/etc/lighttpd/
[root@localhost lighttpd-1.4.37]# gedit doc/config/conf.d/cgi.conf
再来就是去编辑 cgi.conf, 取消注释
-------------------
alias.url += ( "/cgi-bin" => server_root + "/cgi-bin" )
PATH:/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/
[root@localhost lighttpd-1.4.37]# arm-linux-androideabi-gcc --sysroot=/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/ hello.c -o hello
[root@localhost lighttpd-1.4.37]# adb push hello /data/data/www/cgi-bin
将其编译好后放到/data/data/www/cgi-bin , 比如说 first, 之后就透过browser来测试看看
http://localhost:4080/cgi-bin/hello
如果成功的话, 可以看到browser上 Hello world!
------------------------至此,CGI成功
root@mb526:/data/data/webserver # ./lighttpd -D -f /data/data/www/etc/lighttpd/lighttpd.conf -m /data/data/webserver/plugin
------------------------
+++++++++++++++++++++++++++++++ 编译 pcre-8.37 静态库
[root@localhost pcre-8.37]#
/opt/cBPM-android/pcre-8.37
[root@localhost pcre-8.37]#
export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"
export SYSROOT="SYSROOT --pipe -INDK_ROOT/platforms/android-14/arch-arm/usr/include -INDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -ICFLAGS"
export CXXFLAGS="NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -static -lstlport_static -lgcc -lc"
export CPATH="CPATH/arm-linux-androideabi-cpp"
export CXX="CPATH/arm-linux-androideabi-gcc"
export LD="CPATH/arm-linux-androideabi-ar"
./configure --host="arm-linux-eabi" --enable-static --disable-shared
make -j5
[root@localhost pcre-8.37]# ls .libs/libpcre.a
[root@localhost pcre-8.37]# cp .libs/libpcre.a /opt/cBPM-android/criteria-lin/lib
++++++++++++++杂项
$ ldd ./libtest.so
/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]# ls /opt/cBPM-android/criteria-lin/lib/libpcre.a
/opt/cBPM-android/criteria-lin/lib/libpcre.a //下面有libpcre.a的编译过程
[root@localhost pcre-8.37]# pwd
/opt/cBPM-android/pcre-8.37
[root@localhost pcre-8.37]# cp pcre.h /opt/cBPM-android/lighttpd-1.4.37/src/
[root@localhost lighttpd-1.4.37]# gedit src/network.c
添加:
#include "sys/un.h>
--------------------------------------问题: sock_addr has no member named un ,解决方法如下:
[root@localhost lighttpd-1.4.37]# gedit config.h
添加:
#define HAVE_SYS_UN_H 1
[root@localhost lighttpd-1.4.37]# make -j5
--------------------------------------
[root@localhost lighttpd-1.4.37]# gedit src/plugin.c
注释掉:
//#include "plugin-static.h"
--------------------------------------
+++++++++++++++++++++++++++++++++++++++++编译 lighttpd-1.4.37,将用到的库静态链接进来
[root@localhost lighttpd-1.4.37]# pwd
/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]#
export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"
export SYSROOT="SYSROOT --pipe -INDK_ROOT/platforms/android-14/arch-arm/usr/include -INDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -ICFLAGS"
export CXXFLAGS="NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -L/opt/cBPM-android/lighttpd-1.4.37/src/.libs -lstlport_static -lgcc -lc"
export CPATH="CPATH/arm-linux-androideabi-cpp"
export CXX="CPATH/arm-linux-androideabi-gcc"
export LD="CPATH/arm-linux-androideabi-ar"
./configure --host="arm-linux-androideabi" --without-bzip2 --without-zlib
--------------------------------------
./configure --host="arm-linux-eabi" --enable-static --disable-shared --without-bzip2 --without-zlib
--------------------------------------
export LDFLAGS="-LSYSROOT --pipe -INDK_ROOT/platforms/android-14/arch-arm/usr/include -INDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -IHTTP["url"] =~ "\.pdf ./lighttpd -t -f /data/data/www/etc/lighttpd/lighttpd.conf -m /system/lib/web-plugin //这行不用
root@mb526:/data/data/webserver # ./lighttpd -t -f /data/data/www/etc/lighttpd/lighttpd.conf
Syntax OK
root@mb526:/data/data/webserver #
如果没问题的话会, 执行结果会显示
Syntax OK
再来就是验证是否web server可以运行了, 用以下指令来启动lighttpd, -m 指明lib的位置
root@mb526:/data/data/webserver # ./lighttpd -D -f /data/data/www/etc/lighttpd/lighttpd.conf -m /data/data/webserver/plugin
在/data/data/www/htdocs 内放一个index.html来测试
-------------------
Hello, lighthttpd on Android!!
-------------------
[root@localhost lighttpd-1.4.37]# adb push index.html /data/data/www/htdocs
在 宿主机(笔记本)的浏览器访问: http://192.168.0.101:8000/
输出结果:
------------------------
Hello, lighthttpd on Android!!
------------------------
至此,移植成功。
++++++++++++++++++++++++++++++++++++++++++++++++++
以下是要说明怎么启动cgi (也许google可以找到很多答案, 但是这边是我动手try过后确定可行的方法)
[root@localhost lighttpd-1.4.37]# gedit doc/config/lighttpd.conf
edit lighttpd.conf to add mod_alias plugin. 这个动作是一定要作的, 不然会发现就算之后已经有load mod_cgi, 且对应的conf 都设定了, 但却还是不 work.
-------------------
server.modules = (
"mod_access",
"mod_alias"
)
.....
.....
include "conf.d/cgi.conf"
-------------------
[root@localhost lighttpd-1.4.37]# adb push doc/config/lighttpd.conf /data/data/www/etc/lighttpd/
[root@localhost lighttpd-1.4.37]# gedit doc/config/conf.d/cgi.conf
再来就是去编辑 cgi.conf, 取消注释
-------------------
alias.url += ( "/cgi-bin" => server_root + "/cgi-bin" )
PATH:/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/
[root@localhost lighttpd-1.4.37]# arm-linux-androideabi-gcc --sysroot=/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/ hello.c -o hello
[root@localhost lighttpd-1.4.37]# adb push hello /data/data/www/cgi-bin
将其编译好后放到/data/data/www/cgi-bin , 比如说 first, 之后就透过browser来测试看看
http://localhost:4080/cgi-bin/hello
如果成功的话, 可以看到browser上 Hello world!
------------------------至此,CGI成功
root@mb526:/data/data/webserver # ./lighttpd -D -f /data/data/www/etc/lighttpd/lighttpd.conf -m /data/data/webserver/plugin
------------------------
+++++++++++++++++++++++++++++++ 编译 pcre-8.37 静态库
[root@localhost pcre-8.37]#
/opt/cBPM-android/pcre-8.37
[root@localhost pcre-8.37]#
export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"
export SYSROOT="SYSROOT --pipe -INDK_ROOT/platforms/android-14/arch-arm/usr/include -INDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -ICFLAGS"
export CXXFLAGS="NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -static -lstlport_static -lgcc -lc"
export CPATH="CPATH/arm-linux-androideabi-cpp"
export CXX="CPATH/arm-linux-androideabi-gcc"
export LD="CPATH/arm-linux-androideabi-ar"
./configure --host="arm-linux-eabi" --enable-static --disable-shared
make -j5
[root@localhost pcre-8.37]# ls .libs/libpcre.a
[root@localhost pcre-8.37]# cp .libs/libpcre.a /opt/cBPM-android/criteria-lin/lib
++++++++++++++杂项
$ ldd ./libtest.so
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通