C 如何静态编译lighttpd模块

C 如何静态编译lighttpd模块,c,lighttpd,autoconf,automake,libtool,C,Lighttpd,Autoconf,Automake,Libtool,我目前从源头上遵守了lighttpd ./configure --prefix=/home/lighttpd \ --without-pcre \ --without-zlib \ --without-bzip2 我还尝试了-enable static--disable shared选项,但模块仍然从lib目录加载 我想用单个二进制文件编译所有lighttpd模块,而不是从lib目录加载,如何做到这一点?使用flag-DLIGHTTPD_STATIC编译它。如果gcc将警告您语法,请强制将gc

我目前从源头上遵守了lighttpd

./configure --prefix=/home/lighttpd \
--without-pcre \
--without-zlib \
--without-bzip2
我还尝试了-enable static--disable shared选项,但模块仍然从lib目录加载


我想用单个二进制文件编译所有lighttpd模块,而不是从lib目录加载,如何做到这一点?

使用flag-DLIGHTTPD_STATIC编译它。如果gcc将警告您语法,请强制将gcc解释为C99标准:

make CFLAGS=-DLIGHTTPD_STATIC -std=c99
此外,您还必须更改由configure生成的src/Makefile.in,以添加要包含的模块。具体而言,将以下内容添加到am__liblightcomp_la_SOURCE_DIST、am_lighttpd_SOURCES_DIST和common_src中:

mod_access.c mod_staticfile.c
并添加对象。 到am__对象_1和am__对象_2

mod_access.$(OBJEXT) mod_staticfile.$(OBJEXT)
如果src/plugin static.h文件不可用,请更改src/plugin.c文件,找到#include“plugin static.h”行,将其输入并添加到下面:

PLUGIN_INIT(mod_access)
PLUGIN_INIT(mod_staticfile)
交叉过账至

Lighttpd可以使用SCON或make静态构建。简而言之:

烤饼:
$scons-j4 build\u static=1 build\u dynamic=0 prefix=/custom/inst/path install

制造:

#编辑src/Makefile.am,并在“if LIGHTTPD_STATIC”下的部分中,使用要包含在静态构建中的每个模块更新LIGHTTPD_源,或者只使用已经存在的整个列表

$LIGHTTPD_STATIC=yes./configure-C--enable STATIC=yes
$make

有关更多详细信息,请参见

[编辑]要使用“make”静态构建,请使用lighttpd git主分支或lighttpd 1.4.40+