如何静态编译lighttpd模块

时间:2016-05-06 16:42:45

标签: c lighttpd autoconf automake libtool

我目前已从源

编写了lighttpd
./configure --prefix=/home/lighttpd \
--without-pcre \
--without-zlib \
--without-bzip2

我还尝试了-enable-static --disable-shared选项,但模块仍然从lib目录

加载

我想用单个二进制文件编译所有lighttpd模块而不是从lib目录加载,怎么做?

2 个答案:

答案 0 :(得分:2)

交叉发布到https://redmine.lighttpd.net/boards/3/topics/6615

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

使用SCons:
$ scons -j 4 build_static = 1 build_dynamic = 0 prefix = / custom / inst / path install

请:

#edit src / Makefile.am,在'if LIGHTTPD_STATIC'下的部分中,更新lighttpd_SOURCES,每个模块都包含在静态版本中,或者只使用已经存在的整个列表

$ LIGHTTPD_STATIC =是./configure -C --enable-static = yes
$ make

https://redmine.lighttpd.net/boards/3/topics/5912

中的更多详细信息

[edit]要使用'make'进行静态构建,请使用lighttpd git master branch或lighttpd 1.4.40 +

答案 1 :(得分:0)

使用标志-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_objects_1和am__objects_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)