UNIX / Linuxの共有ライブラリ(DLL)の紹介

:まず、共有ライブラリを作成
1.書き込み元xxx1.cのxxx2.c ... / * C(ワイルドカードモード)
2.コンパイルのソースコードを、プラス-fpic .oファイルが生成されている
gccの-c -fpic xxx1.c XXX2 .C ... / *。C(ワイルドカードの実施形態)
3.ビルド共有ライブラリ
GCC -shared -o xxx.o libxxx.so
4.ヘッダファイル、簡単に呼び出し

第二に、共有ライブラリの使用
ソースxxx.cコールする1.書き込み
2.の.oファイルを生成するソースコードをコンパイル
共有ライブラリファイル3.リンクを
残り.A libの接頭辞と接尾辞を削除するにはgcc test.o -l XXX(共有ライブラリを名前)-L。---------- {PATH}
オペレーティングシステムが-L省略することができる環境変数を使用して、LIBRARY_PATH環境変数をサポートしている場合
に行わ4を
実行中に、共有ライブラリの動的ローディングは、システムが自動的にLD_LIBRARY_PATHを見つけますPATH環境変数は、共有ライブラリの位置を決定するために、あなたは見つけることができない場合は
、共有ライブラリファイルを、プログラムが失敗します。(静的ライブラリが必要とされていません)


第三に、と明示的に共有ライブラリをロード
する#include <dlfcn.h>
void *型のdlopen(のconstのchar *フラグにファイル名、int型);
//ファイル名:SOファイル名
オープン://フラグ
//戻り値:void *型、共有ライブラリファイルポインタの有効
dlerror(無効)*チャー;
//共有ライブラリがdlopenの成功で開かれているかどうかを確認
NULLポインタを返す//オープンの成功を示す
null以外の文字列表現を返す//、開くために、故障の原因に含まれている文字列の内容失敗した
ボイドdlsymを*(hanldeのボイド*、constのchar型*記号);
//開いた後に取得するために共有ライブラリdlsymを関数を使用する
// hanlde、共有ライブラリが使用するアドレス、dlopenの戻り値
//シンボルを、あなたは関数名を呼び出す必要があります
//戻り値:void *型は、変換タイプの使用して独自の対応する機能が必要です
int型とdlclose(void *型ハンドル);
//共有ライブラリ、メモリ解放閉じ
パラメータフラグのdlopenの意味は次のとおりです。
RTLD_LAZY:シンボル検索、それがロードされています。(使用時にメモリにロード)
すぐにロードされた:RTLD_NOWを。(IEはメモリにロード開きます)

おすすめ

転載: www.cnblogs.com/alphain/p/11008150.html