GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So initialisieren Sie eine gemeinsam genutzte Bibliothek unter Linux

Wenn Sie möchten, dass Ihr Code portabel ist, sollten Sie wahrscheinlich so etwas versuchen:

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

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

In C++ unter Linux werden globale Variablen automatisch erstellt, sobald die Bibliothek geladen wird. Das ist wahrscheinlich der einfachste Weg.

Wenn beim Laden der Bibliothek eine beliebige Funktion aufgerufen werden soll, verwenden Sie das Konstruktorattribut für GCC:

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

Konstruktorfunktionen werden vom dynamischen Linker aufgerufen, wenn eine Bibliothek geladen wird. Auf diese Weise wird die globale C++-Initialisierung tatsächlich implementiert.


Linux
  1. Wie greife ich von Linux aus auf freigegebene Windows-Ordner zu?

  2. Wie kann ich die Liste der Funktionen anzeigen, die eine gemeinsam genutzte Linux-Bibliothek exportiert?

  3. So verwenden Sie Shared Memory mit Linux in C

  4. Wie wird die Versionierung einer gemeinsam genutzten Bibliothek unter Linux durchgeführt?

  5. So richten Sie googleTest als gemeinsam genutzte Bibliothek unter Linux ein

So überprüfen Sie den gemeinsam genutzten Linux-Speicher mit dem ipcs-Befehl

So listen Sie gemeinsam genutzte Bibliotheken auf, die von ausführbaren Dateien in Linux verwendet werden

So installieren Sie die PyBrain-Python-Bibliothek unter Linux

C++ Dynamic Shared Library unter Linux

Wie kann ich eine Verknüpfung zu einer älteren Version einer gemeinsam genutzten Bibliothek herstellen?

Wie überprüfe ich, ob eine gemeinsam genutzte Bibliothek installiert ist?