問題タブ [dynamic-library]
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.
xcode - Xcodeでdylibをデバッグする方法は?
ライブラリarith用のXcodeプロジェクトがあります。デバッグ構成でビルドできますが、デバッグする必要があります。どうやってやるの?
理想的な方法は、プロジェクトファイルに実行を構築するためのテストコードを設定してから、arithライブラリのソースコードにブレークポイントを設定することです。
ただし、Xcode arithプロジェクトでは、arithライブラリを使用する別のuse_arithプロジェクトを追加できないようです。
Xcodeでダイナミックライブラリをデバッグするために人々が使用する方法は何ですか?
追加した
私はグーグルで検索し、dllをデバッグするいくつかの方法を見つけました。実行中のプロセスにアタッチすることは、ダイナミックライブラリをデバッグする1つの方法です。また、iPhone / iPadプログラミングでは、ダイナミックライブラリは許可されていないため、静的ライブラリが使用されます。
実行中のプロセスへのアタッチ-http: //gcc.gnu.org/onlinedocs/gnat_ugn_unw/Attaching-to-a-Running-Process.html
Xcodeを使用したライブラリのデバッグ-Xcodeを使用したライブラリのデバッグ
iPhoneアプリ間での簡単なモジュラーコード共有:静的ライブラリとプロジェクト間参照-http: //www.clintharris.net/2009/iphone-app-shared-libraries/
linux - Linux ですべての x86 マシン用の汎用バイナリを作成する
ユーザーが自分でコンパイルする必要がないように、オープンソース プロジェクトのバイナリをコンパイルしようとしています。
1 つの 32 ビット ubuntu マシン「A」で作成された一部のバイナリが、32 ビット マシン「B」では機能せず、欠落している .so ファイルに関するエラーが報告されていることに気付きました。
ただし、マシン「B」で最初からコンパイルすると、すべてのエラーがなくなります。
ターゲット マシンでコードをコンパイルすると、これらのエラーがなくなる理由はありますか? 「./configure」と「make」のみを実行し、「make-install」は実行しなかったため、これらの .so ファイルをグローバルに利用できるようにしたわけではありません。
コンパイラが、システム ライブラリにない .so ファイルがあることを検出し、この場合、スタティック ライブラリを実行可能ファイルにリンクしている可能性がありますか?
i386 パッケージがすべての x86 マシンで実行されるように、Ubuntu はどのようにパッケージをコンパイルしますか?
c++ - Openmpでのスレッドの破棄(C ++)
OpenMPによって作成されたスレッドを破棄することは可能ですか?プログラムが起動すると、スレッドは1つだけになります。並列化されたセクションの後、スレッドプールがあるため、複数のスレッドが残ります。並列セクションの実行後にこのプールを破棄する方法はありますか?
ダイナミックライブラリでOpenMPを使用していて、スレッドの実行中にライブラリハンドルを閉じることができないため、質問します(プログラムはセグメンテーション違反になります)。
ありがとう
詳細説明: すべての並列化コードをモジュール(共有ライブラリ)に入れています。次に、モジュールをロードして、抽象基本クラスから派生したクラスを渡します。次に、モジュールはそのクラスを並行して「実行」します。このように、並列化、OpenMP、MPIなどを使用できず、実行時またはオンザフライで並列スキームを変更できます。しかし、OpenMPはスレッドを破棄しません。また、ライブラリを手動でdlcloseする場合、リソースがスレッドの下から破棄されるため、セグメンテーションフォールトが発生します(私は信じています)。ライブラリを閉じずにプログラムを終了させることはおそらく今のところ問題ありませんが、ライブラリを手動で閉じたいと思うことは将来も起こるかもしれません(その場でスキームを変更することを考えてください)。これが理にかなっていることを願っています:)ありがとう
c++ - 静的ライブラリの代わりに共有ライブラリを使用すると、メモリ使用量に影響がありますか?
10 個の静的ライブラリにリンクしています。
ダイナミック ライブラリを使用すると、バイナリ ファイルのサイズが小さくなります。
私が知っているように、動的ライブラリを使用してもメモリ使用量は減りません。
でも、共有ライブラリを使えばメモリ使用量も減るって先輩に言われましたよね?(同じ実行コードに対して複数のプロセスが実行されている場合。)
その発言は正しいですか?
彼は、 library で使用される関数の重複コピーがないため、メモリ使用量が少なくなると私に言いました。そのプロセスの n インスタンスを作成するとき。
プロセスが開始されると、10 個の子がフォークされます。静的ライブラリの代わりに動的ライブラリを使用すると、総メモリ使用量が削減されますか?
php - PHP 警告: PHP の起動: 動的ライブラリを読み込めません
PHP スクリプトを実行すると、次のエラーが発生します。
PHP 警告: PHP の起動: 動的ライブラリ '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' を読み込めません - /usr/local/lib/php/extensions /no-debug-non-zts-20090626/ixed.5.2.lin: 共有オブジェクト ファイルを開けません: 行 0 の不明にそのようなファイルまたはディレクトリはありません
どういう意味ですか?
xcode - iOS でダイナミック ライブラリ関数の呼び出しをデバッグすると、XCode/gdb がスタックを失う
C++ で記述された外部スタティック ライブラリにリンクする iOS プロジェクトがあります。静的ライブラリは、動的にリンクされている libstdc++ によって実装された関数を呼び出します。たとえば、このライブラリの初期化関数を呼び出すと ( と呼びましょうfoo_init()
)、すぐに が呼び出されますsetlocale()
。
スタティック ライブラリは -g でコンパイルされます。つまり、デバッガ内のコードにステップ インするためのデバッグ シンボルが用意されています。に足を踏み入れることに成功しましたfoo_init()
。への呼び出しをステップ オーバーしようとするとsetlocale()
、XCode はそれを行いません。という関数で終わりますdyld_stub_setlocale
。jmp
この関数は、動的ロードと関数呼び出しを実行する単一の命令です。
Stepping Over/In/Out of を試しましたが、目的のdyld_stub_setlocale
場所に移動できず、 に戻りましたfoo_init()
。Step Over と Step In は で終了しstub_helpers
、Step Out は continue のように動作します。Step Over/In inside を試すとstub_helpers
、XCode のシングル ステップとスタック ウィンドウの表示foo_init()
が に変わります??
。この時点で、ステップイン/ステップアウトの種類の決定ツリーが爆発するので、これ以上の詳細には触れませんが、私が試した組み合わせは、 への呼び出し後に行に戻ることはありませんでしたsetlocale
。
行にブレークポイントを設定し、続行を押して動作させることはできますが、これはあまり慣れていない静的ライブラリをデバッグするためのスケーラブルなソリューションではありません。
動的ローダーの問題を回避できるように、代わりに libstdc++-static をリンクする方法を見つけようとしましたが、Apple は新しい SDK からライブラリを削除したため、古いものはありません。
デバッガーがコードを解読しやすくするためのリンカーまたはコンパイラ オプションはありますか?
linker - ダイナミックライブラリがディスク上で更新されたときにLinuxで何が起こるか
Linuxでダイナミックライブラリがロードされ、ディスク上で更新された後、そのライブラリにリンクする新しいプロセスが開始されるとどうなりますか?新しいプロセスは、メモリ内の古いコピーまたはディスク上の新しいバージョンに対してリンクされていますか?
c++ - ダイナミックライブラリはスタティックライブラリを使用し、未定義のシンボルが表示されます
私は自分の問題の解決策を探して、いくつかの手がかりを得ましたが、一貫した解決策を見つけることができませんでした:3つの静的ライブラリ(libone)の機能を使用するダイナミックライブラリ(libdyna.so)のコードがあります。 a、libtwo.a、libthree.a)およびlog4cppライブラリ。そして、最初にすべてが正常に見えたときにビルドしたとき、「libdyna.so」を作成できましたが、ラッパー(jniラッパーは正常に動作します)を介してJavaテストプログラムでテストすると、未定義の参照がたくさんありました。
次に、makeファイルに「-zdefs」フラグを設定すると、未定義の参照が多数表示され、ダイナミックライブラリを再度コンパイルできませんでした。
3つの静的ライブラリを使用して「nm」コマンドを作成しました。これにより、dynalibで使用するすべての関数が正しくエクスポートされます。しかし、3つの静的ライブラリを含む「libdyna.so」上でnmを作成すると、未定義のシンボル(関数)が見つかりました。
動的なものを作りたいときに、リンカーにフラグを追加するようなものでなければならないと思いますが、本当にわかりません。誰かが私を助けてくれますか、または私にいくつかのアイデアを教えてもらえますか?コードが必要な場合はお知らせください。ここに貼り付けます。どうもありがとう。
P / D:英語が下手でごめんなさい。
python - Pythonctypesの戻り値の質問
この単純なコードがあるのはなぜですか
私はそれをダイナミックライブラリとしてコンパイルします
そして、ctypesを使用して、Pythonインタープリターから関数を呼び出します
void
メソッドから返される値がそう17
でないNone
、または類似しているのはなぜですか?ありがとうございました。