Berbagi teknologi

Cara kerja linker, perbedaan link statis dan link dinamis, cara membuat dan menggunakan pustaka link dinamis

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Linker memainkan peran penting dalam pengembangan program. Ia bertanggung jawab untuk mengintegrasikan beberapa file objek dan file perpustakaan ke dalam file yang dapat dieksekusi. Sebelum kita mendalami cara kerja linker, perbedaan antara linking statis dan link dinamis, serta cara membuat dan menggunakan pustaka link dinamis, mari kita uraikan dulu fungsi dasar linker.

Cara kerja tautan

penghubung Ini adalah alat yang bertanggung jawab untuk menggabungkan satu atau lebih file objek dan file perpustakaan ke dalam file yang dapat dieksekusi. Fungsi utamanya meliputi:

  1. Penguraian simbol : Mengidentifikasi dan memproses semua simbol (nama fungsi dan variabel) dalam program, memastikan bahwa setiap simbol memiliki definisi unik. Untuk simbol yang direferensikan tetapi tidak terdefinisi (simbol eksternal), linker mencari definisi di perpustakaan yang disediakan atau file objek lainnya.

  2. mengatur ulang : Menyesuaikan kode dan alamat data di setiap modul dengan alamat memori akhir. Relokasi mencakup koreksi alamat dalam kode dan penyesuaian posisi segmen data untuk memastikan bahwa semua referensi mengarah ke lokasi memori yang benar.

  3. menggabungkan segmen: Menggabungkan segmen dengan tipe yang sama (seperti segmen kode, segmen data, dll.) dari file target berbeda menjadi satu segmen berkelanjutan.

  4. perpustakaan pemrosesan : Menghubungkan kode perpustakaan yang diperlukan oleh program dengan file objek. Linker dapat menangani dua jenis perpustakaan: perpustakaan statis dan perpustakaan dinamis.

  5. Hasilkan file yang dapat dieksekusi: Hasil akhir berupa file executable yang dapat dijalankan di sistem operasi.

Perbedaan antara tautan statis dan tautan dinamis

Tautan Statis DanTautan Dinamis Ini adalah dua mode kerja linker, masing-masing dengan karakteristik dan skenario penggunaan berbeda.

tautan statis
  • konsep : Dalam tautan statis, kode perpustakaan disalin pada waktu kompilasi dan disematkan ke setiap executable yang menggunakannya. Dengan cara ini, file executable yang dihasilkan berisi semua kode yang diperlukan dan tidak bergantung pada file perpustakaan eksternal.

  • keuntungan

    • Independensi yang kuat: File yang dapat dieksekusi yang dihasilkan berisi semua dependensi dan tidak memerlukan file perpustakaan tambahan saat runtime.
    • Kompatibilitas yang baik: runtime tidak bergantung pada versi perpustakaan yang diinstal di sistem, dan tidak akan menemui masalah "konflik versi perpustakaan".
  • kekurangan

    • Ukuran file besar: Setiap file yang dapat dieksekusi berisi kode perpustakaan lengkap, sehingga meningkatkan ukuran file.
    • Masalah pembaruan: Jika perpustakaan diperbarui, semua program yang menggunakan perpustakaan perlu dikompilasi ulang.
  • Ekstensi perpustakaan statis

    • Jendela: .lib
    • Bahasa Indonesia: Bahasa Indonesia: Unix/Linux: .a
tautan dinamis
  • konsep : Dalam tautan dinamis, kode perpustakaan dimuat saat runtime dan tidak disematkan dalam file yang dapat dieksekusi. Eksekusi hanya berisi referensi ke perpustakaan, dan kode perpustakaan dimuat oleh sistem operasi saat runtime.

  • keuntungan

    • Ukuran file kecil: file yang dapat dieksekusi tidak berisi kode perpustakaan, hanya referensi ke perpustakaan.
    • Mudah diperbarui: Memperbarui perpustakaan tidak memerlukan kompilasi ulang program, cukup mengganti file perpustakaan.
    • Efisiensi memori tinggi: Beberapa program dapat berbagi contoh memori dari file perpustakaan yang sama, sehingga mengurangi penggunaan memori.
  • kekurangan

    • Ketergantungan yang kuat: File yang dapat dieksekusi harus dapat menemukan dan memuat versi file perpustakaan yang benar saat dijalankan.
    • Masalah kompatibilitas: Ketidakcocokan versi file perpustakaan dapat menyebabkan program gagal.
  • Ekstensi perpustakaan dinamis

    • Jendela: .dll(Perpustakaan Tautan Dinamis)
    • Bahasa Indonesia: Bahasa Indonesia: Unix/Linux: .so(Objek Bersama)

Membuat dan menggunakan perpustakaan tautan dinamis

Buat perpustakaan tautan dinamis

Pada sistem operasi yang berbeda, metode pembuatan pustaka tautan dinamis sedikit berbeda. Berikut beberapa langkah dan perintah umum:

Buat perpustakaan tautan dinamis di Linux
  1. Tulis kode perpustakaan

    Buat file sumber C yang berisi fungsi yang ingin kita tempatkan di perpustakaan dinamis.

    // example.cpp
    #include