sconsユーティリティを使用して共有ライブラリを生成しています。私が次のルールを書くとき:
SharedLibrary('hello'、'hello.c')
``libhello.so''ファイルを取得します。
`` libhello.so.version''のようなファイルを自動的に取得する方法はありますか?
sconsユーティリティを使用して共有ライブラリを生成しています。私が次のルールを書くとき:
SharedLibrary('hello'、'hello.c')
``libhello.so''ファイルを取得します。
`` libhello.so.version''のようなファイルを自動的に取得する方法はありますか?
libtoolを使用して、共有ライブラリの作成とバージョン管理を処理したい場合があります。残念ながら、これはソフトウェアに組み込まれていないため、libtool と SCons を自分で統合する必要があります。その理由はもちろん、libtool がプラットフォーム固有であるためです。
安価な代替手段として、 env['SHLIBSUFFIX'] を次のようにオーバーライドできます。
Replace(SHLIBSUFFIX = '.so.$SHLIB_VERSION')
次に、$SHLIB_VERSION 構築変数をターゲットごとに個別にオーバーライドできます。
SharedLibrary('hello', 'hello.c', SHLIB_VERSION = 1)
SCons での soname サポートの欠如に関する未解決のバグ レポートと、 Eric S. Raymondからの提案されたパッチがあります。
バージョン管理された共有ライブラリ (soname) のサポート
この機能は、soname と rpath/loadpath の適切な設定を含め、Unix での共有ライブラリの生成とインストールの処理を改善することを目的としています。
大まかに Richard Levitte の作品に基づいて、Eric S. Raymond は SCons コア ルーチンに統合するためのコード (添付ファイルを参照) を提供しました。これまでのところ、Linux、*BSD、および darwin でテストされており、大幅にクリーンアップおよびデバッグされています。すでに gpsd プロジェクトの本番環境で使用されています。
それでも、いくつかの作業を行う必要があります。
SharedLibrary()
この機能を通常の呼び出しでユーザーに提供するか、または のような別の機能で提供するかを決定する必要がありますVersionedSharedLibrary()
。