ホームページ > 運用・保守 > Linuxの運用と保守 > Linux での g++ コンパイルと静的ライブラリと動的ライブラリの使用の詳細な説明

Linux での g++ コンパイルと静的ライブラリと動的ライブラリの使用の詳細な説明

黄舟
リリース: 2017-05-28 11:32:40
オリジナル
4696 人が閲覧しました

以下のエディターは、Linux g++ で 静的 ライブラリと動的ライブラリをコンパイルして使用する方法に関する記事を提供します。エディターはそれがそうであると考えています。かなり良いです。これを参考として共有します。

Windows 環境

では、通常、VS プロジェクトなどの IDE で C++ プロジェクトを開発します。静的ライブラリ (*.lib) と動的ライブラリ (*.dll) の使用はすでによく知られているかもしれませんが、Linux 環境には、対応する静的ライブラリ (*.a) と動的ライブラリという別のモードのセットがあります。 (*.so) はさまざまな方法で生成され、使用されます。最初は慣れないかもしれませんが、VS での設定ほど手順は複雑ではないため、慣れてくるはずです。 Linuxでの静的ライブラリと動的ライブラリの生成と使い方を以下にまとめます: (C++プロジェクトなのでコンパイラはg++を使用しますが、gccの使用と同じです)

まずは。 準備作業

は必要なものをカプセル化することです ライブラリファイルの

関数のヘッダファイルとソースファイルは以下のように記述します:

//myAPI.h 
int ADD(int a, int b); 
int MINUS(int a, int b);
ログイン後にコピー
//myAPI.cpp 
#include "myAPI.h" 
 
int ADD(int a, int b){ 
  return a + b; 
} 
 
int MINUS(int a, int b){ 
  return a - b; 
}
ログイン後にコピー
次に、テスト用のメイン関数のソースファイルを準備します:
//main.cpp 
#include "myAPI.h" 
#include <iostream> 
 
int main(){ 
  std::cout << "1 + 1 = " << ADD(1, 1) << std::endl; 
  std::cout << "1 - 1 = " << MINUS(1, 1) << std::endl; 
  return 0; 
}
ログイン後にコピー

最後に、まず myAPI.cpp ファイルをコンパイルして myAPI.o ターゲット ファイルを生成します

g++ -c myAPI.cpp
ログイン後にコピー

1. 静的ライブラリを生成し、使用します

Linux で myAPI を処理する静的ライブラリを生成するにはコマンド ar を使用します.o ファイルを使用して静的ライブラリ ファイルを生成します。生成されるライブラリ ファイルは仕様に従う必要があり、Linux 上のライブラリ ファイルには「lib」プレフィックスを追加する必要があります。そのため、この例では、次のようにして静的ライブラリ libmyAPI.a を生成できます。コマンド:

ar crv libmyAPI.a myAPI.o
ログイン後にコピー

これで、プロジェクトのコンパイルプロセス中に静的ライブラリを使用できるようになります。この時点で、ライブラリ関数 myAPI.cpp ファイルの定義は次のとおりです (注意してください)。依存する静的ライブラリ ファイルは依存関係の後に配置する必要があります):

g++ main.cpp libmyAPI.a -o output
ログイン後にコピー

コンパイルが完了したら、実行可能ファイルの出力を実行できます。この時点で、libmyAPI.a も実行されます。コマンドを実行する必要はありません。出力結果は次のとおりです。

./output
ログイン後にコピー

2. ダイナミック ライブラリを生成して使用します

Linux でコンパイルするときに -shared パラメータを渡すことで、ダイナミック ライブラリ (.so) ファイルを生成できます。次のように生成される動的ライブラリ

g++ -shared -fPIC -o libmyAPI.so myAPI.o
ログイン後にコピー

はコンパイル時に宣言する必要があり、実行時に依存する必要があります。宣言は次のとおりです

g++ main.cpp -L. -lmyAPI -o output
ログイン後にコピー

"-L" フラグは、関数ライブラリが現在のディレクトリに存在する可能性があることを G++ に伝えます。ディレクトリ; "-lmyAPI" フラグを使用して G++ に通知します

ドライバー プログラム

が共有関数ライブラリ libmyAPI.so を参照する

で次のエラーが表示された場合は、libmyAPI.so を /usr/lib ディレクトリに移動するだけです。 りー

以上がLinux での g++ コンパイルと静的ライブラリと動的ライブラリの使用の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート