0

OpenVMS 用の SQLite の作業ディストリビューションを探しています。メーリング リストで見つけたパッチを使用して、統合ファイルから 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 ソースを用意しました。

4

3 に答える 3

4

リンカーから得られる特定の問題は、システムにない機能をコンパイル時に要求したという事実から発生します。_USE_STD_STAT オプションは OpenVMS v8.2 で初めて利用可能になったと思いますが、まだ 7.3-2 を使用しています。_USE_STD_STAT が定義されている場合、コンパイラとヘッダーは何をすべきかを認識していますが、X/Open 準拠の stat 構造を処理する関数はシステムの C ランタイム (VMS 用語では CRTL) に存在せず、リンカーは「それらの機能を持っていません」と言います。

理想的には、オペレーティング システムをアップグレードできます。この記事の執筆時点では v8.4 です。v7.3-2 は 8 年半前にリリースされ、v8.2 は 7 年以上前にリリースされました。アップグレードが常に可能であるとは限らない技術的、予算的、さらには政治的な理由があることを理解しています。それが私で、OpenVMS Alpha v7.3-2 で立ち往生している場合、コンパイルから _USE_STD_STAT=ENABLE を削除して、何が問題になるかを確認します。

_USE_STD_STAT を有効にすることの副作用の 1 つは、_LARGEFILE も一緒に取得することです。それが SQLite がオプションを必要とする唯一の理由である場合、問題はないかもしれませんが、データベースは 4GB に制限されています。それ以上のことがあると思います。つまり、SQLite は、実際には新しい構造を必要とする stat 構造の要素を使用する可能性が非常に高いです。

http://h71000.www7.hp.com/doc/84final/5763/5763profile_062.html#index_x_1699で、従来の統計構造と標準準拠の統計構造の違いを確認できます。

于 2012-04-22T23:18:46.017 に答える
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 ロックはまだ機能せず、その理由はわかりませんでした。

于 2012-11-07T17:21:00.753 に答える
1

さて、 SQLite -users メーリング リストに、SQLite 3.7.9 を OpenVMS で動作させるというメッセージがありました。それがあなたが持っているバージョンにどの程度関連しているかはわかりません (または、パッチが SQLite 開発者によって採用された場合、IIRC の法的な理由から少しうるさいです) が、役に立つようです。幸運を。

于 2012-04-10T10:44:09.720 に答える