Apache C模块创建,链接SQLite的问题

时间:2009-12-07 04:52:04

标签: c apache

稍微玩了一下,但没有走得太远......

如果我将它编译为独立的可执行文件,我的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网站下载并从源代码编译

2 个答案:

答案 0 :(得分:1)

问题与我下载SQLite和编译有关 - 当我删除所有生成的文件并安装了SQLite的OpenBSD包时,它运行正常。因此,SQLite库必须有一些特定于平台的编译调整。最好使用我猜的包。

- devin

答案 1 :(得分:0)

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