C ++プロジェクト

centos7下の環境を使用します

静的および動的ライブラリ:我々は、コール後の時間のために、一緒にパッケージされ、いくつかの共通の特徴を配置する必要があります。私たちは、コンパイル時とxxxので抽出された書き込みの共通部分xxx.hとxxx.cppファイル、その後、私たちのメインプログラムにxxx.hヘッダファイルを導入し、その後、メインプログラムである前に。 CPPファイルをコンパイルします。

実際には、2つのコンパイル時のプロセスがあり、メインプログラムは、最初のmain.cppに、公共xxx.cpp 2つのバイナリファイルにコンパイルして、実行可能ファイルを形成するために一緒にリンクされていただろう。

C ++でこの依存他の方法の共通のコード上に参照ライブラリに依存する方法としてコンパイルすることができます。

ライブラリでコンパイルは、2つのタイプに分かれています:静的および動的ライブラリを。

 

静的ライブラリ:静的ライブラリコンパイラを使用した場合、実行可能ファイルを生成するために、静的ライブラリとメインプログラムコードパッケージにリンクしますときに我々は、静的ライブラリとして公共の上部をコンパイル。このような実行可能ファイルを生成することができるが、より厄介になりますが、より速く実行され、物事が必要になりますので、すべて一緒にパッケージされている場合、この文書の可搬性の実装が優れています。私たちは、ライブラリファイル、更新を再パッケージ化メインライブラリーを導入する必要性を更新した場合、あります。

生成と使用の静的ライブラリ:

コードファイル_public.h

書式#include <stdio.hに>

空のsayHello();

コードファイル_public.cpp

#include "./_public.h"

空のsayHello()

{

  printf( "こんにちは〜\ N");

}

メインプログラムファイル:TEST.CPP

#include "./_public.h"

sayHello();

G ++ -c _public.cpp:まず_public.cはバイナリの.oファイルにコンパイル。カレントディレクトリの完了後_public.oのファイルを生成します。

AR -crv lib_public.a _public.o:ARツールパッケージオブジェクトファイルでは.a静的ライブラリファイルに。完了lib_public.aは、現在のディレクトリにファイルが生成されますされると、ファイルは静的ライブラリファイルです

G ++ -oテストTEST.CPP -L./ -l_public:パッケージには、メインプログラムファイルと静的ライブラリファイルと実行ファイルを生成します。-Lは、我々はそう直接なり、静的ライブラリのディレクトリを指定するために使用される静的ライブラリです./カレントディレクトリにあります。-lは、(以前のlibと接尾辞.oのを取り除くために)静的ライブラリの参照と後ろの名前です。

./Testその後、得られた実行可能なテストを実行します

 

DLL:ダイナミックアセンブリ時にライブラリとオブジェクトコードに接続されていないが、プログラムのみが実行されていたがロードされています。あなたが同じライブラリを呼び出す場合は、別のアプリケーションでは、単に無駄なスペースの問題を回避するために、メモリインスタンス内で共有ライブラリのコピーを持っています。動的ライブラリプログラムが実行される唯一のロードが、また、プログラムへのデプロイを静的データベースの更新を解決し、ページがトラブルをもたらすでしょう公開しました。ユーザーは、動的ライブラリ、増分更新を更新する必要があります。

また、上記のコードの共有ライブラリとコールフローとしてコンパイルされます、次のとおりです。

G ++ -fPIC -c _public.cpp:まず_public.cはバイナリの.oファイルにコンパイル。カレントディレクトリの完了後、ファイル_public.oを生成する複数のアプリケーション間で共有されるアドレスに依存しないコンパイラ(PIC、位置独立コード)を作成-fpic。

ダイナミックリンクライブラリファイルを生成する.so:G ++ -shared -o lib_public.so _public.o。lib_public.soファイルを生成します、現在のディレクトリが完了した後、ダイナミックリンクライブラリを生成しています。

G ++ -o test1のTEST.CPP -L./ -l_public:実行可能ファイルを生成します

CP lib_public.so /usr/lib/lib_public.so:デフォルトgは++動的ライブラリのアドレスを見つけるためにための/ usr / libにコピーするファイルlib_public.soました。

ldconfigを:コマンドを実行します。このコマンドは見つけることができる私たちの新しいライブラリG ++のファイルにコピーすることができるようにするために、ライブラリのリストを更新するために使用されます。

プログラムを実行します./ TEST1

 

おすすめ

転載: www.cnblogs.com/maycpou/p/12605681.html