自定义编译sqlite为php so

自定义编译sqlite为php so

使用 soundex 功能编译 sqlite我学会了如何自定义编译 sqlite。虽然这是朝着我在功能测试中使用 sqlite 的 soundex 的目标迈出的一步,但我发现我还没有做到这一点。我需要替换现有的sqlite.so。修改此命令的各种努力:

$ sudo ./configure --prefix=/usr --disable-static CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_SOUNDEX"

失败了。在 sqlite 源代码目录中安装php5-dev并运行phpize会导致

找不到 config.m4

虽然非常欢迎对我的程序进行更正,但我也希望找到一些关于如何到达我想要去的地方的更完整的参考资料。我只是无知,而不是愚蠢。例如,我在哪里可以找到D在 sqlite 功能之前需要的SQLITE_SOUNDEX

[编辑:部分答案 = 使用 GNU 编译器,假设我知道 CFLAGS 是 gcc 选项,使用预处理器选项,并且 sqlite 功能应该被视为宏。]

编译EasyHowTo编译软件是不够的。 构建 PHP 扩展似乎也没什么帮助。

答案1

在 Ubuntu 中,有两个 SQLite 软件包:sqlitesqlite3。如果您使用第二个,它会编译并支持该功能(不确定它是否存在于其他版本中...)

sqlite> SELECT SOUNDEX("John"), SOUNDEX("Joahn");
J500|J500

因此首先尝试使用第二个版本:

$ sudo apt-get remove sqlite
$ sudo apt-get install sqlite3

现在回答你的问题:我已经尝试编译它并且它似乎有效:

  • 从以下位置下载 SQLite 源代码这里。 我用了sqlite-autoconf

  • 提取并运行 configure 命令没有 sudo. 你稍后才会需要它

    $ ./configure --prefix=/usr --disable-static CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_SOUNDEX"
    
  • 编译 SQLite

    $ make
    
  • 测试一下

    $ ./sqlite3
    sqlite> SELECT SOUNDEX("John"), SOUNDEX("Joahn");
    J500|J500
    
  • 将其安装在您的系统中

    $ sudo make install
    

相关内容