web-dev-qa-db-ja.com

Java静的または動的リンクでのLGPLライブラリの使用

私はLGPLとCに関する多くの投稿を検索して読みましたが、Javaに関連する投稿を見つけることができたとき、私の心は安らぎがまだありませんでした。ガイドライン、そして私は明らかに最終的に弁護士に相談するでしょう!

セットアップ:

  • LGPLライブラリがあります、それを呼び出してみましょうLib-B
  • Lib-Bに基づくマイライブラリがありますMy-Libと呼びます

私の意見ではLib-Bアーキテクチャは十分に定式化されておらず、私はMy-Lib自分のアーキテクチャに適用し、someLib-Bの関数。

問題は、そのLib-Bが、アクセスしたい関数をMy-Libのアーキテクチャに適さない方法でラップしているため、変更しましたLib-Bとカプセル化された(複製された)コード行をカプセル化(複製)して、まだ内部にあるいくつかのオブジェクトLib-B内で必要なコード行My-Lib =。

それが私の現在の静的設定です...

=====================

2つ目の方法は、セットアップを動的にすることです。

  • My-Lib関数を使用してインターフェイスを定義するライブラリを作成できますLib-Aと呼ぶ必要があります。

後でMy-LibをコンパイルしてLib-Aでリンクし、Lib-BLib -A、そしてLib-Bを動的にMy-Libにロードします。

どちらの場合もLib-Bの変更をLGPLとしてリリースし、エンドユーザーがコードなどにアクセスできるようにする必要があることを理解しています... My-Libについて=?

ありがとう、アダム。

3
TacB0sS

LGPLを使用すると、ソースコードを開かずにMy-libをリリースできます。これがLGPLの目的です。ユーザーが自分のソースを開かずにLGPLライブラリをリンクできるようにするリンク例外を提供します。

LGPLは、ユーザーにLib-Bへの変更のソースコードへのアクセスを提供しますが、アプリケーションの残りの部分をクローズドソースに保つことを妨げることはありません。

3
Robert Harvey