2009-12-07 26 views
1

玩这个了一下周围,但没有得到太远......Apache的C模块中创建,连接问题SQLite的

我的SQLite代码的逻辑工作。

我mod_hello.c编译并没有SQLite的代码

结合使用这两种负载/正常工作,模块编译和安装,但Apache进程每次被加载时立即死亡。剥离出所有的SQLite代码,并简单地链接到SQLite导致这个问题。换句话说,用相同的代码:

apxs -cia -L/usr/local/lib -I/home/devin mod_hello.c 
/* Works Fine, prints "hello world" */ 

apxs -cia -L/usr/local/lib -I/home/devin -lsqlite3 mod_hello.c 
/* compiles but dies on apache load */ 

该平台的OpenBSD 4.6到平台上的Apache版本1.3和SQLite 3.6.20从SQLite的网站上下载的,并从源代码编译

+0

模具的特定错误消息怎么会是有用的... – 2009-12-07 05:15:44

+0

好,我想我得去我的gdb书上蜷缩起来学习..在任何写入error_log之前,apache都会死掉,创建一个httpd.core文件。我推测在这个核心转储文件中有一个答案? – 2009-12-07 05:27:46

+0

@Devin,你在用什么作为编写你的apache模块的指南/教程? – 2010-01-05 02:40:29

回答

1

这个问题与我下载SQLite和编译有关 - 当我删除所有这些结果文件并安装了SQLite的OpenBSD包时,它工作正常,所以必须有一些平台特异性编译所需SQLite库的调整最好使用我猜包

- ?德文

0

通常,当这种情况发生,或者libsqlite3.so不在LD_ LIBRARY_PATH中,或者libsqlite3.so不是你想链接的东西,也就是说有例如您要链接到的libsqlite3.1.so。所以我的建议是检查加载时间路径,以确保libsqlite3.so在那里,并检查是否有一个libsqlite3.x.so可能需要链接到某处。 (-lsqlite3.x,而不是-lsqlite3)

+0

感谢您的帮助! 我发现在/ usr/local/lib目录下: libsqlite3.a libsqlite3.la libsqlite3.so.8.6 使用-lsqlite3.8.6无法编译。从libsqlite3.so.8.6到libsqlite3.so在该目录中建立符号链接不会改变原始行为 - 模块编译,但apache核心在启动时转储。 – 2009-12-07 14:47:59