タグ付けされた質問 「shared-libraries」

共有ライブラリは、起動時にプログラムによって読み込まれるライブラリです。各ライブラリの単一の共有コピーが物理メモリに読み込まれ、複数のプロセスで同時に使用できます。これにより、メモリの使用量が減り、システムのパフォーマンスが向上します。このタグを単独で使用しないでください。

5
作成するすべてのプログラムで使用するAndroid開発用の独自のライブラリを作成するにはどうすればよいですか?
私はDelphiプログラマであり、何年にもわたって、自分が作成するすべてのDelphiプログラムで使用できる何百ものクラスとルーチンを作成してきました。 このライブラリはdlibと呼ばれ、このフォルダーをライブラリパスに置き、Delphiユニットのusesセクションにあるユニットの1つを使用することにより、すべてのDelphiプログラムで使用できます。 JavaとAndroidの開発にまったく新しいので、これを同じように行う方法を知りたいと思います。 だから私の質問、どのようにして独自のクラスを書き、それらをいくつかのグローバルフォルダーに入れ、これらのクラスとルーチンを私が書くすべてのAndroidプログラムで使用できますか? これは基本的な質問であることはわかっています。おそらくGoogleを検索してEclipseで試してみるとわかりますが、誰かが私を正しい軌道に乗せることができれば、時間を大幅に節約できるでしょう。 ありがとう。

7
C / C ++ with GCC:リソースファイルを実行可能ファイル/ライブラリに静的に追加します
GCCを使用してリソースファイルを実行可能ファイルまたは共有ライブラリファイルに直接静的にコンパイルする方法を知っている人はいますか? たとえば、決して変更されないイメージファイルを追加します(変更される場合は、とにかくファイルを置き換える必要があります)。ファイルシステム内に配置したくないです。 これが可能である場合(そして、Visual C ++ for Windowsもこれを行うことができるためだと思います)、独自のバイナリに格納されているファイルをどのようにロードできますか?実行可能ファイルはそれ自体を解析し、ファイルを見つけて、そこからデータを抽出しますか? たぶん、まだ見たことがないGCCのオプションがあるでしょう。検索エンジンを使用しても、実際には適切なものが出てきませんでした。 共有ライブラリと通常のELF実行可能ファイルで機能させるには、これが必要です。 どんな助けでもありがたいです

1
-rpathと-Lの違いは何ですか?
gccまたld、ライブラリの検索パスを指定する多くの方法を提供します。その中には-rpath、-Lフラグがあります。マンページは、これら2つのフラグの違いを明らかにしておらず、事実上、各フラグがライブラリをライブラリ検索パスに追加すると述べています。しかし、両方のフラグがまったく同じことをするのは奇妙に思えます。これら2つのオプションの違いは何ですか?


11
AndroidでのINSTALL_FAILED_MISSING_SHARED_LIBRARYエラー
Google APIを使用するAndroidアプリケーションを実行しようとすると、次のエラーが発生します [2009-07-11 11:46:43-FirstMapView]インストールエラー:INSTALL_FAILED_MISSING_SHARED_LIBRARY [2009-07-11 11 :46:43-FirstMapView]詳細については、logcatの出力を確認してください。 [2009-07-11 11:46:44-FirstMapView]起動がキャンセルされました! 誰かが私がこのエラーを解決するのを手伝ってくれる?

7
「共有オブジェクトの作成時に `.rodata.str1.8 'に対する再配置R_X86_64_32は使用できません」でコンパイルが失敗する
このソースコードをVPSのメイクファイルからコンパイルしようとしていますが、機能しません。VPSは64セントのOSです これが完全なエラーです # make gcc -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/amx/*.c g++ -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/*.cpp g++ -c -O3 -w -DLINUX -I../SDK/amx/ *.cpp g++ -O2 -fshort-wchar -shared -o "TCP_V1.so" *.o /usr/bin/ld: TCP-LINUX_V1.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC …

4
共有ライブラリ内の未解決のシンボルを簡単にチェックしますか?
私はかなり大きなC ++共有オブジェクトライブラリを書いていますが、デバッグを面倒にする小さな問題に遭遇しました。 ヘッダーファイルで関数/メソッドを定義し、そのスタブを作成するのを忘れた場合(開発中)、実行可能ファイルではなく共有オブジェクトライブラリとしてビルドしているため、コンパイル時にエラーが表示されず、その機能を実装するのを忘れました。私が何かが間違っていることを見つける唯一の方法は、実行時に、このライブラリに対してリンクしているアプリケーションが「未定義のシンボル」エラーでフォールオーバーするときです。 コンパイル時に必要なすべてのシンボルがあるかどうかを確認する簡単な方法を探しています。おそらく、Makefileに追加できるものです。 私が思いついた解決策の1つは、コンパイルされたライブラリを実行してnm -C -U、すべての未定義の参照のデマングルされたリストを取得することです。問題は、GLibCなどの他のライブラリにあるすべての参照のリストも表示されることです。もちろん、最終的なアプリケーションがまとめられると、このライブラリと一緒にリンクされます。の出力を使用することも可能であろうnmとするgrepすべての私のヘッダファイルを通って、対応する名前のいずれかどうかを確認..しかし、これは非常識と思われます。確かにこれは珍しい問題ではなく、それを解決するためのより良い方法がありますか?

1
macOS Mojaveにアップグレードした後、MATLABがMEXファイルをアンロードしない
MATLABでは、clear mexすべてのMEXファイルをメモリからアンロードします(ロックされている場合を除く)。以前のバージョンのmacOSでは、clear mexコマンドを発行するだけで、MATLABを再起動せずにMEXファイルを再コンパイルして変更したバージョンを実行できました。これは、モハベではもはや不可能です。 たとえば、次の簡単なMEXファイル(get_data_pointer.c)を取り上げます。 #include "mex.h" void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { plhs[0] = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL); *(uint64_t*)mxGetData(plhs[0]) = (uint64_t)mxGetData(prhs[0]); } MEXファイルを作成してメモリに読み込むことができます mex get_data_pointer.c get_data_pointer(0) それをクリアするには、 clear mex [~,mexfiles] = inmem version -modules inmem実際、MEXファイルがメモリにロードされていないことを示す空のセル配列を返しますが、version -modules(ドキュメントに記載されていないため、この回答から)/Users/cris/matlab/get_data_pointer.mexmaci64出力には引き続き表示されます。そして、MEXファイルのソースコードを変更して再コンパイルすると、実際にはMEXファイルが再ロードされることはなく、MATLABを終了するまで古いバージョンが引き続き実行されます。 macOS Mojave上のMATLAB R2017aでこれを確認しています。これは、High Sierraで同じバージョンのMATLABで問題になることはありませんでした。 再起動せずにMATLABにMEXファイルを強制的にアンロードさせるにはどうすればよいですか?

5
動的リンク-Linux対。ウィンドウズ
Windowsでは、MSVCのDLLプロジェクトでC / C ++コードをコンパイルすると、2つのファイルが取得されます。 MyDll.dll MyDll.lib 私が理解しMyDll.libている限り、DLL内の関数の場所を示すポインタテーブルの種類が含まれています。このdllを使用すると、たとえばexeファイルで、MyDll.libリンケージ時にexeファイルに埋め込まれるため、実行時に関数がどこにあるかを「認識」し、関数MyDll.dllを使用できます。 しかし、Linuxで同じコードをコンパイルすると、1つのファイル(Linuxのファイルに相当)MySo.soなし で1つしか得られないので、リンク時に何も埋め込まれていない場合、Linuxの実行可能ファイルは関数の場所をどのようにして知るのでしょうか。MySo.alibMySo.so
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.