GNU/Linux >> Linux Esercitazione >  >> Linux

Come inizializzare una libreria condivisa su Linux

Se vuoi che il tuo codice sia portabile dovresti probabilmente provare qualcosa del genere:

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

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

In C++ sotto Linux, le variabili globali verranno costruite automaticamente non appena la libreria viene caricata. Quindi questo è probabilmente il modo più semplice per procedere.

Se hai bisogno di una funzione arbitraria da chiamare quando la libreria viene caricata, usa l'attributo costruttore per GCC:

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

Le funzioni di costruzione vengono chiamate dal linker dinamico quando viene caricata una libreria. Questo è in realtà il modo in cui viene implementata l'inizializzazione globale C++.


Linux
  1. Come installare la libreria Ncurses in Linux

  2. Come mostrare tutte le librerie condivise utilizzate dagli eseguibili in Linux?

  3. Libreria condivisa dinamica C++ su Linux

  4. Come utilizzare la memoria condivisa con Linux in C

  5. Come eseguire il controllo delle versioni di una libreria condivisa in Linux?

Come usare BusyBox su Linux

Come controllare la memoria condivisa di Linux usando il comando ipcs

Come elencare le librerie condivise utilizzate dagli eseguibili in Linux

Come installare la libreria Python PyBrain in Linux

Come aggiungere il file .so a java.library.path in Linux

Come posso collegarmi a una versione precedente di una libreria condivisa