Maison Opération et maintenance exploitation et maintenance Linux Explication détaillée de la compilation g++ et de l'utilisation des bibliothèques statiques et dynamiques sous Linux

Explication détaillée de la compilation g++ et de l'utilisation des bibliothèques statiques et dynamiques sous Linux

May 28, 2017 am 11:32 AM

L'éditeur ci-dessous vous apportera un articleCompilation G++ et utilisation sous LinuxStatiqueLe méthode de bibliothèque et bibliothèque dynamique. L'éditeur pense que c'est plutôt bien, je vais donc la partager avec vous maintenant et lui donner une référence.

Dans l'environnement WindowsDans le cadre du projet, nous Nous développons généralement des projets C++ dans des IDE tels que VS. Nous pouvons être familiers avec la génération et l'utilisation de bibliothèques statiques (*.lib) et de bibliothèques dynamiques (*.dll). un autre ensemble de modes. Les bibliothèques statiques (*.a) et dynamiques correspondantes (*.so) sont générées et utilisées de différentes manières. Vous n'êtes peut-être pas à l'aise avec cela au début, mais vous devriez l'utiliser davantage. habitué à ce genre d'utilisation, car les étapes ne sont pas aussi compliquées que la configuration sous VS

Voici un résumé des méthodes de génération et d'utilisation des bibliothèques statiques et des bibliothèques dynamiques sous Linux : (Depuis c'est un projet C++, donc le compilateur utilise g++, mais c'est la même chose que l'utilisation de gcc)

Le premier est le travail de préparation, qui consiste à encapsuler le fonctions dont nous avons besoin dans un fichier de bibliothèque. Le fichier d'en-tête et le fichier source sont écrits comme suit :

//myAPI.h 
int ADD(int a, int b); 
int MINUS(int a, int b);
Copier après la connexion
//myAPI.cpp 
#include "myAPI.h" 
 
int ADD(int a, int b){ 
  return a + b; 
} 
 
int MINUS(int a, int b){ 
  return a - b; 
}
Copier après la connexion

Ensuite, préparez un fichier source de fonction principale pour les tests :

//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; 
}
Copier après la connexion

Enfin, compilez notre Le fichier myAPI.cpp génère le fichier cible myAPI.o

g++ -c myAPI.cpp
Copier après la connexion

1. Générez une bibliothèque statique et utilisez <🎜. >

pour générer une bibliothèque statique sous Linux La commande ar traite le fichier myAPI.o pour générer un fichier de bibliothèque statique. Le fichier de bibliothèque généré doit suivre les spécifications, et le fichier de bibliothèque sous Linux doit être préfixé par ". lib". Par conséquent, pour cet exemple, la bibliothèque statique libmyAPI.a peut être générée via la commande suivante :

ar crv libmyAPI.a myAPI.o
Copier après la connexion
Ensuite, vous pouvez utiliser la bibliothèque statique pendant le processus de compilation du projet. À ce stade, le fichier de définition de la fonction bibliothèque myAPI.cpp n'est plus nécessaire. La commande de compilation main.cpp est la suivante (notez que les dépendances sont les suivantes. Les fichiers de bibliothèque statiques doivent être placés après les dépendances) :

g++ main.cpp libmyAPI.a -o output
Copier après la connexion
Une fois la compilation réussie, la sortie du fichier exécutable peut être exécutée. À ce stade, libmyAPI.a n'est plus nécessaire pour exécuter la commande et afficher les résultats comme suit :

./output
Copier après la connexion
Copier après la connexion
<. 🎜>

2. Générer une bibliothèque dynamique et utiliser pour passer lors de la compilation sous Linux Le paramètre -shared peut générer une bibliothèque dynamique ( .so), comme suit

. La bibliothèque dynamique générée doit être déclarée lors de la compilation et doit dépendre de celle-ci pendant l'exécution. La déclaration est la suivante
g++ -shared -fPIC -o libmyAPI.so myAPI.o
Copier après la connexion

. . L'indicateur "-L." indique à G++ que la bibliothèque de fonctions peut être située dans le répertoire courant ; utilisez l'indicateur "-lmyAPI" pour indiquer au programme G++
g++ main.cpp -L. -lmyAPI -o output
Copier après la connexion
pilote

de référencer la bibliothèque de fonctions partagée . libmyAPI.so pendant la phase de liaison. Si l'erreur suivante s'affiche lors de son utilisation, déplacez simplement libmyAPI.so vers le répertoire /usr/lib :

./output
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment démarrer Apache Comment démarrer Apache Apr 13, 2025 pm 01:06 PM

Les étapes pour démarrer Apache sont les suivantes: Installez Apache (Commande: Sudo apt-get install Apache2 ou téléchargez-le à partir du site officiel) Start Apache (Linux: Sudo SystemCTL Démarrer Apache2; Windows: Cliquez avec le bouton droit sur le service "APACHE2.4" et SELECT ") Vérifiez si elle a été lancée (Linux: SUDO SYSTEMCTL STATURE APACHE2; (Facultatif, Linux: Sudo SystemCTL

Que faire si le port Apache80 est occupé Que faire si le port Apache80 est occupé Apr 13, 2025 pm 01:24 PM

Lorsque le port Apache 80 est occupé, la solution est la suivante: découvrez le processus qui occupe le port et fermez-le. Vérifiez les paramètres du pare-feu pour vous assurer qu'Apache n'est pas bloqué. Si la méthode ci-dessus ne fonctionne pas, veuillez reconfigurer Apache pour utiliser un port différent. Redémarrez le service Apache.

Comment redémarrer le serveur Apache Comment redémarrer le serveur Apache Apr 13, 2025 pm 01:12 PM

Pour redémarrer le serveur Apache, suivez ces étapes: Linux / MacOS: Exécutez Sudo SystemCTL Restart Apache2. Windows: Exécutez net stop apache2.4 puis net start apache2.4. Exécuter netstat -a | Findstr 80 pour vérifier l'état du serveur.

Comment résoudre le problème qu'Apache ne peut pas être démarré Comment résoudre le problème qu'Apache ne peut pas être démarré Apr 13, 2025 pm 01:21 PM

Apache ne peut pas démarrer car les raisons suivantes peuvent être: Erreur de syntaxe du fichier de configuration. Conflit avec d'autres ports de demande. Problème d'autorisations. Hors de la mémoire. Traitement dans l'impasse. Échec du démon. Problèmes d'autorisations de Selinux. Problème de pare-feu. Conflit logiciel.

Comment apprendre Debian Syslog Comment apprendre Debian Syslog Apr 13, 2025 am 11:51 AM

Ce guide vous guidera pour apprendre à utiliser Syslog dans Debian Systems. Syslog est un service clé dans les systèmes Linux pour les messages du système de journalisation et du journal d'application. Il aide les administrateurs à surveiller et à analyser l'activité du système pour identifier et résoudre rapidement les problèmes. 1. Connaissance de base de Syslog Les fonctions principales de Syslog comprennent: la collecte et la gestion des messages journaux de manière centralisée; Prise en charge de plusieurs formats de sortie de journal et des emplacements cibles (tels que les fichiers ou les réseaux); Fournir des fonctions de visualisation et de filtrage des journaux en temps réel. 2. Installer et configurer syslog (en utilisant RSYSLOG) Le système Debian utilise RSYSLOG par défaut. Vous pouvez l'installer avec la commande suivante: SudoaptupDatesud

Internet fonctionne-t-il sur Linux? Internet fonctionne-t-il sur Linux? Apr 14, 2025 am 12:03 AM

Internet ne s'appuie pas sur un seul système d'exploitation, mais Linux joue un rôle important. Linux est largement utilisé dans les serveurs et les appareils réseau et est populaire pour sa stabilité, sa sécurité et son évolutivité.

Comment réparer la vulnérabilité Apache Comment réparer la vulnérabilité Apache Apr 13, 2025 pm 12:54 PM

Les étapes pour corriger la vulnérabilité Apache incluent: 1. Déterminez la version affectée; 2. Appliquer des mises à jour de sécurité; 3. Redémarrez Apache; 4. Vérifiez la correction; 5. Activer les fonctionnalités de sécurité.

Comment démarrer Nginx dans Linux Comment démarrer Nginx dans Linux Apr 14, 2025 pm 12:51 PM

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

See all articles