首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用ICU编译sqlite?

如何用ICU编译sqlite?
EN

Stack Overflow用户
提问于 2011-07-05 14:17:52
回答 3查看 8.3K关注 0票数 7

我从http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz下载了sqlite

如何使用icu编译sqlite?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-05 14:26:33

1)可以引用http://www.sqlite.org/cvstrac/fileview?f=sqlite/ext/icu/README.txt将其编译为SQLite的动态扩展

编译和使用

扩展的最简单方法是构建并使用它作为一个可动态加载的SQLite扩展。要在*nix上使用gcc执行此操作:

gcc -shared icu.c icu-config --cppflags --ldflags -o libSqliteIcu.so

您可能需要添加"-I“标志,以便gcc可以找到sqlite3ext.h和sqlite3.h。生成的共享库libSqliteIcu.so可以以与任何其他动态可加载扩展相同的方式加载到sqlite中。

(在SQLite提示符中加载是.load libSqliteIcu.so )

2)您可以在启用ICU的情况下编译SQLite。根据http://www.sqlite.org/compile.html,您应该定义宏SQLITE_ENABLE_ICU

-DSQLITE_ENABLE_ICU添加到CFLAGS变量或在一些配置文件中添加#define SQLITE_ENABLE_ICU

好吧,这里有一些标准文档中没有描述的东西。以下是在启用ICU的情况下调用configure的示例:

代码语言:javascript
运行
复制
 CFLAGS='-O3 -DSQLITE_ENABLE_ICU' CPPFLAGS=`icu-config --cppflags` LDFLAGS=`icu-config --ldflags` ./configure

您还应该安装icu-config程序(它来自libiculibicu-dev软件包)

票数 11
EN

Stack Overflow用户

发布于 2018-10-18 22:40:44

您是在启用icu的情况下构建合并,还是仅构建icu扩展,这取决于您要对icu执行的操作。

如果你需要一个icu标记器(做fts),你需要构建合并,如果你只需要icu函数作为https://www.sqlite.org/cgi/src/dir?ci=6cb537bdce85e088&name=ext/icu列表,那么icu扩展就足够了。

当构建icu扩展时,我发现我不能将它命名为libSqliteIcu.so,因为自述文件说b/c,当我加载它时,我得到了这个错误

代码语言:javascript
运行
复制
sqlite> .load ./libSqliteIcu.so
Error: dlsym(0x7fa073e02c60, sqlite3_sqliteicu_init): symbol not found

sqlit mail list问了这个问题后,我被告知,我已经证实了这一点。

符号名称为sqlite3_icu_init。加载模块lib<x>.so时,将调用symbol sqlite3_<x>_init。您需要(a)将共享库重命名为正确的名称(libicu.so),或者在加载模块时将初始化函数的名称(sqlite3_icu_init)传递给加载程序,或者(b)更改icu.c源代码中的sqlite3_icu_init函数的名称,使其与模块加载程序正在查找的名称相匹配……

票数 3
EN

Stack Overflow用户

发布于 2021-05-19 14:46:21

要在启用ICU的情况下编译SQLite,您应该定义宏SQLITE_ENABLE_ICU

确保您已经安装了libicu-dev (在Debian/Ubuntu上)。

正如@osgx所写的,标准文档缺少您也需要设置的特定于ICU的标志。从Ubuntu20.04开始,icu-config已被弃用且缺失,因此您应该使用pkg-config

代码语言:javascript
运行
复制
CFLAGS="-O2 -DSQLITE_ENABLE_ICU `pkg-config --libs --cflags icu-uc icu-io`" ./configure
make

请参见:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6578600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档