代码之家  ›  专栏  ›  技术社区  ›  Devin Ceartas

Apache C模块创建,链接sqlite时出现问题

  •  1
  • Devin Ceartas  · 技术社区  · 15 年前

    玩这个,但不要太远…

    如果我将sqlite代码编译为独立的可执行文件,那么它的逻辑就可以工作。

    我的mod ou 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,平台版本为Apache1.3和sqlite 3.6.20,从sqlite站点下载并从源代码编译。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Devin Ceartas    15 年前

    这个问题与我下载sqlite和编译有关——当我删除所有生成的文件并安装了openbsd包for sqlite时,它工作得很好。因此,必须对sqlite库进行一些特定于平台的编译调整。我想最好用这些包裹。

    ——德文

        2
  •  0
  •   user224003    15 年前

    通常情况下,libsqlite3.so不在ld_u library_路径中,或者libsqlite3.so不完全是您想要链接的,例如libsqlite3.1.so是您想要链接的。因此,我的建议是检查加载时间路径,确保libsqlite3.so存在,并检查是否存在libsqlite3.x.so,以便您可能需要链接到某个地方。(-lsqlite3.x而不是-lsqlite3