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

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

May 28, 2017 am 11:32 AM

以下のエディターは、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

Apacheサーバーを再起動する方法 Apacheサーバーを再起動する方法 Apr 13, 2025 pm 01:12 PM

Apacheサーバーを再起動するには、次の手順に従ってください。Linux/MacOS:sudo systemctl restart apache2を実行します。 Windows:Net Stop apache2.4を実行し、ネット開始apache2.4を実行します。 Netstat -A |を実行しますサーバーのステータスを確認するには、STR 80を見つけます。

Apacheを開始できない問題を解決する方法 Apacheを開始できない問題を解決する方法 Apr 13, 2025 pm 01:21 PM

Apacheは、次の理由で起動できません。構成ファイル構文エラー。他のアプリケーションポートとの競合。権限の問題。メモリから。デッドロックを処理します。デーモン障害。 Selinux許可の問題。ファイアウォールの問題。ソフトウェアの競合。

Debian syslogを学ぶ方法 Debian syslogを学ぶ方法 Apr 13, 2025 am 11:51 AM

このガイドでは、Debian SystemsでSyslogの使用方法を学ぶように導きます。 Syslogは、ロギングシステムとアプリケーションログメッセージのLinuxシステムの重要なサービスです。管理者がシステムアクティビティを監視および分析して、問題を迅速に特定および解決するのに役立ちます。 1. syslogの基本的な知識Syslogのコア関数には以下が含まれます。複数のログ出力形式とターゲットの場所(ファイルやネットワークなど)をサポートします。リアルタイムのログ表示およびフィルタリング機能を提供します。 2。syslog(rsyslogを使用)をインストールして構成するDebianシステムは、デフォルトでrsyslogを使用します。次のコマンドでインストールできます:sudoaptupdatesud

インターネットはLinuxで実行されますか? インターネットはLinuxで実行されますか? Apr 14, 2025 am 12:03 AM

インターネットは単一のオペレーティングシステムに依存していませんが、Linuxはその上で重要な役割を果たしています。 Linuxは、サーバーやネットワークデバイスで広く使用されており、安定性、セキュリティ、スケーラビリティに人気があります。

Apacheの脆弱性を修正する方法 Apacheの脆弱性を修正する方法 Apr 13, 2025 pm 12:54 PM

Apacheの脆弱性を修正する手順は次のとおりです。1。影響を受けるバージョンを決定します。 2。セキュリティの更新を適用します。 3。Apacheを再起動します。 4.修正を確認します。 5.セキュリティ機能を有効にします。

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

See all articles