GNU/Linux >> Znalost Linux >  >> Linux

Jak inicializovat sdílenou knihovnu v Linuxu

Pokud chcete, aby byl váš kód přenosný, měli byste pravděpodobně zkusit něco takového:

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

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

V C++ pod Linuxem se globální proměnné vytvoří automaticky, jakmile se knihovna načte. Takže to je pravděpodobně nejjednodušší způsob.

Pokud potřebujete, aby se při načítání knihovny zavolala libovolná funkce, použijte atribut konstruktoru pro GCC:

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

Funkce konstruktoru jsou volány dynamickým linkerem při načítání knihovny. Takto je ve skutečnosti implementována globální inicializace C++.


Linux
  1. Jak používat BusyBox na Linuxu

  2. Jak vytvořit sdílený adresář pro všechny uživatele v Linuxu

  3. Jak nainstalovat knihovnu Ncurses v Linuxu

  1. Úvod do sdílených knihoven Linuxu (Jak vytvořit sdílené knihovny)

  2. Dynamická sdílená knihovna C++ v systému Linux

  3. Jak používat sdílenou paměť s Linuxem v C

  1. Jak získat přístup ke sdílené složce Windows z Linuxu?

  2. Jak zobrazit všechny sdílené knihovny používané spustitelnými soubory v Linuxu?

  3. Jak přidat soubor .so do java.library.path v Linuxu