1

我正在交叉编译 lighttpd 以在 arm 系统上使用。我设置了一个 NFS 系统,其根目录位于 /home/user/targetfs。我能够将服务器设置为运行良好。我遇到的问题是我的模块试图在不正确的目录中找到。

./configure --host=${TARGET_SYS} --disable-short-tags --without-mysql --without-pear --disable-all --disable-short-tags --without-pcre --without-zlib --without-bzip2

我遇到的错误消息如下:

2012-04-29 23:14:07: (plugin.c.169) dlopen() failed for: /home/user/targetfs/lib/mod_indexfile.so /home/user/targetfs/lib/mod_indexfile.so: cannot open shared object file: No such file or directory                                           
2012-04-29 23:14:07: (server.c.676) loading plugins finally failed 

我知道便宜的解决方法是将mod文件复制到它说它正在寻找它们的地方。有没有一种方法可以更改配置选项,以便让 lighttpd 在 /lib 中查找 mods?

4

2 回答 2

2

我创建了一个临时解决方法,它只使用以下内容:

lighttpd -m /lib -f /var/www/lighttpd.conf 
于 2012-08-22T18:59:22.257 回答
0

当您运行 configure 时,-prefix 和/或 --libdir 选项会将模块路径硬连接到您将要构建的二进制文件中。一个常见的错误是将这些设置为主机系统上的路径。相反,您应该将其设置为目标系统上的路径。在这种情况下,你想要 --libdir=/lib 然后,当你运行 make install 时(运行 make 之后),你可以给它一个“DESTDIR”选项:

make install DESTDIR=/home/user/targetfs

结果是一切都在主机系统上的 /home/user/targetfs 下结束,但是二进制文件一旦部署到目标上,就会在 /lib 中查找模块

(我有同样的问题。搜索首先把我带到这里,然后到我找到这个解决方案的 lighttpd 论坛。)

于 2017-01-20T11:08:38.990 回答