問題タブ [shared-libraries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
496 参照

java - デフォルトでローカル Java ライブラリをインストールする場所は?

JNI バインディングを C++ ライブラリと統合しています。

ライブラリは通常の規則に従います。インストール ルートは/usr/localデフォルトであり、--prefix引数 toで変更できます./configure.aまたは.soファイルが入ります${prefix}/lib。等

JNI バインディングは、libfoojni.so(ネイティブ部分) とlibfoo.jar(Java 部分) の 2 つの新しいライブラリを生成します。

このスキームの下で、これらのファイルを配置する従来の場所は何ですか (例: ${prefix}/java)?

ユーザーが別個の Java ルート ディレクトリ (例: /usr/share/java) を指定できるようにすることは望ましいですか?

libfoojni.soJava 固有のサブディレクトリに移動する${prefix}/lib必要がありますか?

0 投票する
2 に答える
152 参照

c++ - VS2008で同じ設定でDLLファイルの束を構築する最も簡単な方法

私は現在、POSIX C ++アプリケーションを移植して、Cygwinなどを使用せずにWindowsで実行しています。今のところ問題ありません。現在、アプリケーション(ZNC、興味がある場合はIRCバウンサー)は、Linux/BSDなどの.so共有ライブラリファイルからのモジュールのロードをサポートしています。

メインの実行可能ファイルを問題なく移植し、すべてVS2008プロジェクトファイルなどにラップしました。さて、これらのモジュールはすべて個別の.cppファイルであり、GetVersion()のようなシンボルをエクスポートするため、実行可能ファイルにリンクすることはできません。そして、とにかくそれは実行可能ではありません。

したがって、長い話を短くするために、すべてのモジュール(20を超える)を個別のDLLファイルにコンパイルする(する必要があります)。ただし、それぞれに1つのVSプロジェクトを作成したくありません。つまり、おそらくmakefileを作成する必要がありますか?または何かのようなもの?私はこれまでWindowsでこれを行ったことがないので、それが私の質問です。一連の.cppsを別々のDLLファイルにコンパイルするための最良のアプローチは何ですか(同じ設定で、すべてが1つの場所/ファイルに便利に保存されます)?

前もって感謝します!IR

0 投票する
3 に答える
28056 参照

linux - 共有ライブラリへのシンボリック リンクを作成する Bash スクリプト

この質問は、シェル スクリプトを作成しているモンスターにとってはかなり簡単だと思います。

bash シェル スクリプトを使用して、Unix の共有ライブラリへのシンボリック リンクを作成する最もエレガントで最短の方法を探しています。

必要なのは、「libmythings.so.1.1、libotherthings.so.5.11」などの共有ライブラリ ファイルのリストから始めて、次のようなシンボリック リンクを作成することです。

ライブラリ ファイルは、他のシェル スクリプトなどの他のファイルを含むディレクトリ内にあります。

編集:まあ、「ldconfig -nN」。正常に動作する可能性がありますが、「.so」の後にライブラリのメジャー番号を追加せずに、少なくとも 1 つのライブラリのリンクも必要です。これは、1 つまたは複数のライブラリが Java からの JNI 呼び出しのエントリ ポイントであるためです。 System.loadlibrary("libraryname") によってインスタンス化され、"libraryname.so.X" ではなく "libraryname.so" という名前のライブラリが必要です。

Java 部分に回避策があれば、ldconfig -nN だけを使用したソリューションが機能する可能性があります。

0 投票する
2 に答える
7304 参照

tfs - Team Foundation サーバーのソース管理構造で共有プロジェクトを処理する方法

Team Foundation Server のソース管理構造を読んだ後、いくつかの質問が頭に浮かび、誰かがコメントできるかどうか疑問に思っています。

私が取り組んでいるプロジェクトを構成するいくつかのコンポーネントがあります。スマートクライアント、Web サービス、スマートクライアントが使用する Web サービスのプロキシ、デーモン、およびスマートクライアントと Web サービスの両方で使用される共通ユーティリティ ライブラリがあります。各コンポーネントは、同じ作業プロジェクトに関連付けられています。

各コンポーネントが独立するようにソース ツリーを構成しました。つまり、各コンポーネント (スマートクライアント、Web サービス、デーモン、プロキシ、共通ユーティリティ) には、それぞれをリリースできるように、独自のトランクと独自のソリューション ファイルがあります。コンポーネントを独立して。プロキシと共通ユーティリティを使用するスマートクライアントの場合など、他のコンポーネントによって使用されるコンポーネントについては、他のサードパーティ ライブラリ (プロジェクトの代わりに参照されるバイナリ) と同様に処理されるリリースを作成しました。これがベストプラクティスであることを誰かが確認できますか?

私は tfs build を使用してコンポーネントのリリースをビルドしてきましたが、すべての tfs ビルドが存在するビルド出力ディレクトリ以外の場所にある場合、リリースをどこに置くべきか疑問に思っています。おそらく、それら (スマートクライアントで使用されるプロキシ リリース アセンブリなど) を他のサード パーティ ライブラリと共に TFS にチェックインし、リリース アセンブリを使用する場所に分岐する必要があります (たとえば、プロキシ リリース DLL をスマートクライアント lib ディレクトリに分岐します)。 ?

0 投票する
4 に答える
4134 参照

java - LinuxでBundle-NativeCodeを使用しても機能しません

次のフォルダ構造を含むプラグインを作成します。

  • src
  • native / so / libsystemcommand.so
  • META-INF / MANIFEST.MF

マニフェストにはコマンドが含まれます

build.propertiesは次のようになります

Activator私のクラスのstartメソッドで私は

実行時にライブラリが見つからず、UnsatisfiedLinkErrorがスローされます。

プラグインにさらに属性を設定する必要がありますか?ターゲットプラットフォームでいくつかの情報を解凍する必要がありますか?

編集:

0 投票する
1 に答える
245 参照

c++ - 共有ライブラリの発見

LinuxでC++を使用しています。未知の共有ライブラリのコレクションを動的にバインドしたい。共有ライブラリによって公開されているすべてのパブリック関数とそれらの関数の文字列名を検出するためのコードが必要です。このタスクを実行するにはどうすればよいですか?

0 投票する
3 に答える
24198 参照

shared-libraries - dlopen を使用してライブラリをロードすると、「未定義のシンボル」エラーが発生する

動的共有ライブラリをプラグインとして使用するコードを書いています。

共有ライブラリを構築するための私のコマンド ラインは次のようになります。

モジュール内では、メインの実行可能ファイル内にロードされた他の共有ライブラリにある関数を呼び出すことができます。

ただし、実行可能ファイル自体にある (エクスポートされた) 関数にアクセスできません (undefined symbolエラーが発生します)。

私の呼び出しはdlopen次のようになります。

実行可能ファイルのすべてのユーティリティ関数をさらに別の共有ライブラリに配置することなく、モジュールが実行可能ファイルにコールバックする方法を誰かアドバイスしてもらえますか?

0 投票する
21 に答える
1454189 参照

linux - 共有ライブラリの読み込み中の Linux エラー: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

プログラムは、Linux PC から Linux+Xenomai ARM ツールチェーンにクロスコンパイルされた Xenomai テスト スイートの一部です。

編集: OK、末尾の .1 がファイル名の一部であることに気付きませんでした。とにかくそれはどういう意味ですか?

0 投票する
4 に答える
22039 参照

c++ - g++ を使用した動的共有ライブラリのコンパイル

Program-Library-HOWTOの次の簡単な DL ライブラリのサンプル コードを g++ でコンパイルしようとしています。これは単なる例であるため、共有ライブラリの使用方法と作成方法を学ぶことができます。私が開発しているライブラリの実際のコードは、C++ で記述されます。

プログラムを gcc でコンパイルすると、正常に動作します。

ファイル名とコンパイラを次のように変更すると

次のエラーが表示されます。

foo.cpp:16: エラー: 'void*' から 'double (*)(double)' への変換が無効です

C ++ではvoidポインターから暗黙のキャストを実行できないことを理解しています(理解したと思います、これが間違っている場合は修正してください)が、Cでは許可されています。これが、上記のコードがgccを使用してコンパイルするが、使用しない理由ですg++. そこで、上記の 16 行目を次のように変更して、明示的なキャストを試みました。

これを行うと、次のエラーが表示されます。

foo.cpp:16: エラー: 代入で 'double*' を 'double (*)(double)' に変換できません

これらの問題は、他の何よりも、適切な C++ コーディング標準に対する私自身の一般的な無知に関係している可能性があります。C++ のサンプル コードを使用する Linux 用の動的ライブラリの開発に関する優れたチュートリアルを教えてくれる人はいますか?

0 投票する
5 に答える
17324 参照

c++ - g++: 静的ライブラリと動的ライブラリをリンクする順序は?

「my_app」というメインの実行可能ファイルがあり、他のいくつかのライブラリを使用しているとします。3 つのライブラリは静的にリンクされ、他の 3 つのライブラリは動的にリンクされています。「my_app」に対してどの順序でリンクする必要がありますか?

しかし、これらはどの順序でリンクする必要がありますか?

libSB に依存する libSA (静的 A のように) と libSB に依存する libSC を取得したとします。

および 3 つの動的ライブラリ: libDA -> libDB -> libDC(libDAは基本、libDCは最高)

これらはどの順序でリンクする必要がありますか?基本的なものは最初ですか、それとも最後ですか?

正しい順序のように思えますが、そうですか?動的ライブラリと静的ライブラリの間に依存関係がある場合、またはその逆の場合はどうなりますか?