Linuxアプリケーションでの共有ライブラリのロードと接続


アプリケーションは、コンパイル時に接続することなく、動的コネクタに任意の共有ライブラリのロードと接続を要求する場合があります.動的接続は、ソフトウェアの配布に使用できる強力で有用な技術です.高性能Webサービスの構築【高性能Webサーバは、動的接続に基づくより効率的かつ完全な方法でコンテンツを更新できる】.
動的接続の考え方に基づいて、生成された動的コンテンツの各関数を共有ライブラリにパッケージ化することが、様々なソフトウェアを更新する方法であるため、既存の関数を動的に更新したり、新しいライブラリ関数を追加したりすることができるのは、機能を修正したり、新しい機能を追加したりすることである.
Windowsで生成する動的接続ライブラリは.DLLファイルは、linuxシリーズで生成する.soファイル、同様に、どのソフトウェア開発においても、動的接続ライブラリはJNIなどの重要な面である.
linuxで動的接続ライブラリをインポートする方法は、次のとおりです.
     #include
     /*                */
     void *dlopen(const char * filename,int flag);


     /*                */
     void dlsym(void *handle,char *symbol);


     /*             */
     int dlclose(void *handle);
  
     /*             */
     const char *dlerror(void);

上記の方法は,メソッドや機能を更新する際に接続ライブラリを置き換えるだけでよい.
Windowsで使用:#pragam comment(lib,“library.DLL”);
linuxで:
void *handle;
void (*addvec)(int *,int *,int *,int);
char *error;
handle=dlopen("/library.so",RTLD_LAZY);
addvec=dlsym(handle,"addvec");//   "addvec"            //
/*          dlerror()          */
addvec(x,y,z,2);
dlclose(handle);

JNIでは、上のものはすべてカプセル化され、統一的なインタフェースSystemしか提供されていません.loadLibrary("/library.so");
これにより、呼び出したい動的接続ライブラリのメソッドを直接呼び出すことができます.