質問
AX11 上で Nx Witness Metadata SDK(6.0.6 系)を使用してプラグインをビルドしたところ、OS 側と Nx Server 同梱の libstdc++ のバージョン差異によりエラーが発生します。
ライブラリのバージョンを合わせる方法はありますか?
対象製品
- AX11
- Nx Witness(Metadata SDK 6.0.6 系)
回答
AX11 V3.x ファームウェア(Ubuntu 24.04)環境では、OS 側の libstdc++ が Nx Server 同梱版より新しいため、ABI 不整合が発生する場合があります。
例:
- OS 側:
/usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.33 - Nx Server 同梱:
/opt/networkoptix/mediaserver/lib/libstdc++.so.6.0.30
Nx Server 実行時は同梱ライブラリが優先されるため、OS 側の新しいライブラリを前提にビルドされたプラグインは動作しない可能性があります。
本事象への対処方法として、以下のいずれかをご検討ください。
方法 1:Docker 上に Ubuntu 20.04 ビルド環境を構築する(推奨)
AX11 上で Docker を利用し、Ubuntu 20.04 コンテナ内でプラグインをビルドする方法です。
Ubuntu 20.04 では libstdc++.so.6.0.28 など Nx Server 同梱版より古いバージョンが使用されるため、ABI 不整合を回避できる可能性があります。
概要手順:
- AX11 上で Docker を有効化します。
- Ubuntu 20.04 ベースのビルド用コンテナを作成します。
- コンテナ内で Metadata SDK サンプルをビルドします。
- 生成した so ファイルを AX11 上の所定ディレクトリへ配置します。
- Nx Server を再起動して動作確認します。
※ Docker 利用時は、ファームウェアを最新バージョンへ更新することを推奨します。
Docker の利用方法については FAQ「エッジゲートウェイに Docker 環境を構築することは出来ますか?」をご参照ください。
方法 2:AX11 を V2.x ファームウェアへダウングレードする
V2.x 系ファームウェアは Ubuntu 20.04 ベースのため、ビルド環境の整合性を取りやすくなります。
ただし、以下の点にご注意ください。
- Nx のバージョンが低下する可能性がある
- Ubuntu 20.04 のサポート状況
- ビルド用機と動作確認用機を分けるなど運用上の手間が発生する可能性がある
本方法は検証環境が別途確保できる場合に限りご検討ください。
補足
OS 側ライブラリを直接置き換える、または Nx Server 同梱ライブラリを変更することは、動作保証外となるため推奨しておりません。
Nx Server と同等、またはそれより古いバージョンの libstdc++ 環境でビルドすることが基本方針となります。
コメント
0件のコメント
サインインしてコメントを残してください。