GNU/Linux >> Belajar Linux >  >> Linux

Cara menginisialisasi perpustakaan bersama di Linux

Jika Anda ingin kode Anda portabel, Anda mungkin harus mencoba sesuatu seperti ini:

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

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

Di C++ di Linux, variabel global akan dibuat secara otomatis segera setelah pustaka dimuat. Jadi itu mungkin cara termudah untuk melakukannya.

Jika Anda memerlukan fungsi arbitrer untuk dipanggil saat pustaka dimuat, gunakan atribut konstruktor untuk GCC:

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

Fungsi konstruktor dipanggil oleh tautan dinamis saat pustaka dimuat. Ini sebenarnya bagaimana inisialisasi global C++ diimplementasikan.


Linux
  1. Bagaimana Mengakses Folder Bersama Windows dari Linux?

  2. C++ Dynamic Shared Library di Linux

  3. Bagaimana cara melihat daftar fungsi yang diekspor oleh perpustakaan bersama Linux?

  1. Cara mengatur googleTest sebagai perpustakaan bersama di Linux

  2. Bagaimana cara menambahkan file .so ke java.library.path di Linux

  3. Menautkan perpustakaan bersama dengan lib bersama lainnya di linux

  1. Cara menggunakan BusyBox di Linux

  2. Bagaimana saya bisa menautkan ke versi lama dari perpustakaan bersama

  3. Bagaimana cara memeriksa apakah perpustakaan bersama diinstal?