GNU/Linux >> Tutoriels Linux >  >> Linux

Comment initialiser une bibliothèque partagée sous Linux

Si vous voulez que votre code soit portable, vous devriez probablement essayer quelque chose comme ceci :

namespace {
  struct initializer {
    initializer() {
      std::cout << "Loading the library" << std::endl;
    }

    ~initializer() {
      std::cout << "Unloading the library" << std::endl;
    }
  };
  static initializer i;
}

En C++ sous Linux, les variables globales seront construites automatiquement dès que la bibliothèque sera chargée. C'est donc probablement la façon la plus simple de procéder.

Si vous avez besoin qu'une fonction arbitraire soit appelée lorsque la bibliothèque est chargée, utilisez l'attribut constructeur pour GCC :

__attribute__((constructor)) void foo(void) {
    printf("library loaded!\n");
}

Les fonctions constructeur sont appelées par l'éditeur de liens dynamique lorsqu'une bibliothèque est chargée. C'est en fait ainsi que l'initialisation globale C++ est implémentée.


Linux
  1. Comment accéder au dossier partagé Windows à partir de Linux ?

  2. Comment afficher toutes les bibliothèques partagées utilisées par les exécutables sous Linux ?

  3. Comment afficher la liste des fonctions qu'une bibliothèque partagée Linux exporte ?

  4. Comment utiliser la mémoire partagée avec Linux en C

  5. Comment puis-je créer un lien vers une ancienne version d'une bibliothèque partagée

Comment utiliser BusyBox sous Linux

Comment vérifier la mémoire partagée Linux à l'aide de la commande ipcs

Comment répertorier les bibliothèques partagées utilisées par les exécutables sous Linux

Comment installer la bibliothèque Python PyBrain sous Linux

Lier une bibliothèque partagée avec une autre bibliothèque partagée sous Linux

Comment vérifier si une bibliothèque partagée est installée ?