是否有可用于OpenVMS的sqlite工作分发?

时间:2012-04-10 10:34:53

标签: sqlite vms openvms

我正在寻找适用于OpenVMS的SQLite的分布式工作。我尝试使用我在邮件列表中找到的补丁从amalgamation文件构建SQLite 3.7.9,但它不太有效。

我在OpenVMS Alpha 7.3-2上使用HP C V7.1-015。 由于我无法安装似乎包含SQLite3的python,我必须从源代码构建。

我使用以下命令编译:

$ CC /OPTIMIZE -
     /DEFINE=(SQLITE_THREADSAFE=0, -
              SQLITE_OMIT_LOAD_EXTENSION=1, -
              SQLITE_OMIT_COMPILEOPTION_DIAGS=1, -
              SQLITE_OMIT_MEMORYDB=1, -
              SQLITE_OMIT_TEMPDB=1, -
              SQLITE_OMIT_DEPRECATED=1, -
              SQLITE_OMIT_SHARED_CACHE=1, -
              _USE_STD_STAT=ENABLE) -
     /FLOAT=IEEE_FLOAT -
     sqlite3.c
$ CC /OPTIMIZE -
     /DEFINE=(SQLITE_THREADSAFE=0, -
              SQLITE_OMIT_LOAD_EXTENSION=1, -
              SQLITE_OMIT_COMPILEOPTION_DIAGS=1, -
              SQLITE_OMIT_MEMORYDB=1, -
              SQLITE_OMIT_TEMPDB=1, -
              SQLITE_OMIT_DEPRECATED=1, -
              SQLITE_OMIT_SHARED_CACHE=1, -
              _USE_STD_STAT=ENABLE) -
     /FLOAT=IEEE_FLOAT -
     shell.c

我从邮件列表中复制了定义,并添加了/ FLOAT = IEEE_FLOAT以消除大多数关于浮点的警告(与指数308引起的溢出有关)。

在编译期间,我收到了一些信息和警告。 链接时我收到以下消息:

$ LINK shell.obj,sqlite3.obj
...
%LINK-W-NUDFSYMS, 2 undefined symbols:
%LINK-I-UDFSYM,         __STD_FSTAT
%LINK-I-UDFSYM,         __STD_STAT
...

由于我在这里有点迷失,我宁愿拥有在OpenVMS上编译的SQLite3源代码。

3 个答案:

答案 0 :(得分:4)

您从链接器获得的具体问题源于您在编译时请求系统没有的功能。我相信_USE_STD_STAT选项首先在OpenVMS v8.2中可用,但你在7.3-2。您的编译器和标题知道在定义_USE_STD_STAT时要执行的操作,但处理符合X / Open的统计结构的函数在系统上的C运行时(VMS用语中的CRTL)中不存在,并且链接器是告诉你,“没有那些功能。”

理想情况下,您可以升级操作系统。撰写本文时的当前版本是v8.4。 v7.3-2发布于8年半前,v8.2发布于7年前。我知道有技术,预算甚至政治原因,升级并非总是可行。如果是我,而且我被困在OpenVMS Alpha v7.3-2上,我会尝试从编译中删除_USE_STD_STAT = ENABLE,看看有什么爆炸。

启用_USE_STD_STAT的一个副作用是你也可以获得_LARGEFILE。如果这是SQLite需要该选项的唯一原因,您可能会很好,但仅限于4GB数据库。我怀疑它还有更多,即SQLite很可能利用stat结构中实际需要更新结构的元素。

您可以在http://h71000.www7.hp.com/doc/84final/5763/5763profile_062.html#index_x_1699了解传统和符合标准的统计结构的差异。

答案 1 :(得分:2)

我最近改进了SQLite的VMSish补丁,并将其用于SQLite版本3.7.14.1:http://www.mail-archive.com/sqlite-users@sqlite.org/msg73570.html(或http://sqlite.1065341.n5.nabble.com/Building-SQLite-3-7-14-1-for-OpenVMS-td65277.html)。

虽然POSIX锁定仍然无效,但我无法找到原因。

答案 2 :(得分:1)

好吧,there was a message on the sqlite-users mailing list让SQLite 3.7.9在OpenVMS上工作。我不知道你所拥有的版本有多相关(或者如果补丁被SQLite开发人员采用;由于法律原因IIRC,它们有点挑剔)但它看起来很有用。祝你好运。