動的ライブラリは、ディスクとメモリの容量を節約し、プログラムのアップグレードを容易にし、CPUキャッシュヒット率を向上させることなどができます。見てみましょう。
動的ライブラリとは何ですか?
ダイナミックリンクライブラリとも呼ばれるダイナミックライブラリ英語はDLL、ダイナミックリンクライブラリの略語、DLLは複数のプログラムで同時に使用できるコードとデータを含むライブラリです。DLLは実行可能ファイルではありません。動的リンクは、プロセスがその実行可能コードの一部ではない関数を呼び出す方法を提供します。関数の実行可能コードは、コンパイル、リンク、およびそれらを使用するプロセスとは別に格納された1つ以上の関数を含むDLLにあります。 DLLはデータとリソースの共有にも役立ちます。複数のアプリケーションがメモリ内のDLLの単一コピーの内容に同時にアクセスできます。 DLLは、複数のプログラムで同時に使用できるコードとデータのライブラリです。
I.簡単な説明
Linuxでの動的ライブラリファイルの拡張子は' .so'(共有オブジェクト)です。慣例により、すべての動的ライブラリファイル名はlibname.soの形式です(おそらく名前にバージョン番号を追加します)。したがって、スレッド関数ライブラリはlibthread.soと呼ばれます。静的ライブラリのファイル名はlibname.aです。共有アーカイブのファイル名形式はlibname.saです。共有アーカイブは、人々が静的なものから動的なものへと移行するのに役立つ、単なる移行形態です。
Xiaobianは、ネットワーク上での独自の学習経験と優れたコンテンツを統合し、動的ライブラリファイルを生成してリンクする方法を簡単な例で紹介します。
オペレーティングシステム:Ubuntu 14.0.4
GCCバージョン:4.1.3
次に、ライブラリファイルとテストファイルのコード
ライブラリファイルとテストファイルディレクトリー:/home /test /program /
1.ライブラリーのファイル名:myLibSrc.c
コードは以下のとおりです。
/*
filename :myLibSrc.c
* /
#include "stdio.h"
#include' myLibInclude.h'
int
myLibSrcFun(){
return 0;
}
2ファイル:main.c
コードは次のとおりです。
/*
ファイル名:main.c
* /
#include Stdio.h "
#include; myLibInclude.h'
int main(intargc、char ** argv){
printf('メイン関数!\\ n'
;
//ロードされた動的ライブラリの関数を呼び出します。
myLibSrcFun();
0を返します。
}
"strong" 3、ヘッダーファイル:myLibInclude.h "/strong"
/*
ファイル名:myLibInclude.h
* /
intmyLibSrcFun(); //関数を宣言します。
3番目に動的ライブラリのコンパイル方法
ライブラリファイルmyLibSrc.cコマンドを次のようにコンパイルします。 :
コードは次のとおりです。
$ gcc myLibSrc.c -shared -o libmyLib.so
または:$ gcc myLibSrc.c -fpic-shared -g -DDEBUG -o libmyLib.so
コンパイルが成功すると、動的ライブラリファイルが/home /test /program /ディレクトリに生成されます。libmyLib.so
追加する点が2つあります。
A. Linuxの場合、通常のユーザーモードを使用することをお勧めしますスーパーユーザー権限が必要な場合は、sudoまたはsu rootを使用してrootユーザーパスワードスイッチを入力できます。個々の学習と使用の観点から、そして多くの操作はrootユーザーを使用する必要があるので、rootユーザーの直下でコンパイルしてください。
B、動的ライブラリをコンパイルするときのパラメータの意味
-fpic:出力オブジェクトモジュールはaddressメソッドで再配置できます。
-shared:対応するソースファイルに対して対応するダイナミックリンクライブラリファイルを生成するように指定します。
4番目に動的ライブラリのテスト方法
テストファイルをコンパイルします。main.c
コードは次のとおりです。
$ gcc– o app main.c /ホーム/test /program /libmyLib.so
正常にコンパイルされた後に実行します。 /app:
コードは次のとおりです。
主な機能!
myLibSrcFun()があります。注:
1.上記のコンパイル済みコマンド$ gcc– o app main.c /home /test /program /libmyLib.soの最後のパラメータ
は、特定の接続ライブラリファイルを指定する絶対パスです。この例のライブラリファイルの絶対パスは、/home /test /program /libmyLib.soです。
もちろん、システムからライブラリファイルのパスにアクセスする場合(通常、システム関数ライブラリは/usr /libディレクトリにあります)。動的ライブラリをリンクする場合は、最初に生成されたライブラリファイルを/usr /libにコピーしてからリンクでコピーできます。
コードは次のとおりです。
$ cp libmyLib.so /usr /lib /libmyLib.so
$ gcc– o app main.c -lmyLib
ここで、リンク方法の簡単な説明:$ gcc– o app main.c -lmyLibについてCコンパイラに渡される、目に見えるコマンドライン引数の– lmyLibの最後のパラメータには、関数ライブラリのフルパスは含まれておらず、関数ライブラリディレクトリ内のファイルのフルネームも含まれていません。実際、コンパイラは、-lmyLibオプションに従って、対応する関数ライブラリ(/usr /libの下)にリンクするように指示されています、つまり、関数ライブラリの名前はlibmyLib.so、つまり< lib'セクションとファイルの拡張子は省略しましたが、前に‘ l’を追加しました。
上記はLinuxでの動的ライブラリ生成の例ですが、これらの例を通して、Linux動的ライブラリがどのように生成されるかについてさらに学ぶことができます。
Gentooを使うユーザーが少ないため、Linuxユーザーの中にはGentooをオープンソースツールとして選んだ人もいます。多くのユーザーがそれを使おうとしており、G
Linuxのhistoryコマンドは、Linuxのシステム操作でよく使用されるコマンドを表示するために使用されますまた、初心者が習得する必要があるコマンドでもあります。あなたが理解しているように。あなたは、コマンドライン履歴からコマンドを実行すると
1. HISTTIMEFORMAT表示のタイムスタンプは、通常は実行されたコマンドやコマンド自体の数を示し、
More 1 2008-08-05 19:02:39サービスネットワークの再起動 2 2008-08-05 19:02:39 exit 3 2008-08- 05 19:02:39 id
をインストールして使用する方法 Linuxシステムでは、何かをダウンロードするときにWebページを閲覧すると、それが非常にカードになるので、ダウンロード速度を制限する必要があり、Trickleは優れた
Linux管理者は、グループ作成、パスワード設定、権限管理など、システムアカウントを合理的に管理する必要がありますが、今日、XiaobianはCentOSアカウントの管理を導入したいと考えています。管
CactiはPHPで実装する必要があるネットワークトラフィック監視グラフィカル分析ツールで、インストール時に設定する必要があるため、インストール時に多くの問題が発生します。 Xiaobianは、Gen
Linuxシステムの使い方を習得することは、実際には多くのコマンドを習得するプロセスですが、Linuxシステムを習得するためのコマンドも、単なる暗記ではなくてトリッキーです。これがLinuxコマンドを学ぶ上でのいくつかの秘訣です。
I.毎日のヒント
Linuxコマンドを学ぶためのゆるやかな方法は、端末を開くたびに「毎日のヒント」を表示させることです。これはあなたにいくつかの役に立つ
all) Shuf -n 1) この行を増やすだけです。もっと面白くしたいのなら、cowsayをインストールすることができます。 Ubuntu /Debianにcowsayをインストールしてください
win 8システム下でのIEブラウザのフォントサイズの固定方法
Win10 App Storeのアップデートが表示される80072ee2エラー解決策
Win7システムは、IEブラウザを使用して「インターネットサイトを開くことができません」という解決策を表示します。
Win10のアップデート後にカメラを使用できない場合はどうすればいいですか?カメラに接続できない場合はどうすればいいですか。
CentOSでCtrl + Alt + Delキーを押してショートカットを再起動する
Windows 7のシステムはgb2312フォントを解決するために設定することはできません