6

sconsユーティリティを使用して共有ライブラリを生成しています。私が次のルールを書くとき:

SharedLibrary('hello'、'hello.c')

``libhello.so''ファイルを取得します。

`` libhello.so.version''のようなファイルを自動的に取得する方法はありますか?

4

3 に答える 3

3

libtoolを使用して、共有ライブラリの作成とバージョン管理を処理したい場合があります。残念ながら、これはソフトウェアに組み込まれていないため、libtool と SCons を自分で統合する必要があります。その理由はもちろん、libtool がプラットフォーム固有であるためです。

安価な代替手段として、 env['SHLIBSUFFIX'] を次のようにオーバーライドできます。

Replace(SHLIBSUFFIX = '.so.$SHLIB_VERSION')

次に、$SHLIB_VERSION 構築変数をターゲットごとに個別にオーバーライドできます。

SharedLibrary('hello', 'hello.c', SHLIB_VERSION = 1)
于 2010-06-09T04:40:23.240 に答える
2

SCons での soname サポートの欠如に関する未解決のバグ レポートと、 Eric S. Raymondからの提案されたパッチがあります。

バージョン管理された共有ライブラリ (soname) のサポート

この機能は、soname と rpath/loadpath の適切な設定を含め、Unix での共有ライブラリの生成とインストールの処理を改善することを目的としています。

大まかに Richard Levitte の作品に基づいて、Eric S. Raymond は SCons コア ルーチンに統合するためのコード (添付ファイルを参照) を提供しました。これまでのところ、Linux、*BSD、および darwin でテストされており、大幅にクリーンアップおよびデバッグされています。すでに gpsd プロジェクトの本番環境で使用されています。

それでも、いくつかの作業を行う必要があります。SharedLibrary()この機能を通常の呼び出しでユーザーに提供するか、または のような別の機能で提供するかを決定する必要がありますVersionedSharedLibrary()

于 2012-08-30T16:31:29.327 に答える