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.
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:
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.
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.
menggabungkan segmen: Menggabungkan segmen dengan tipe yang sama (seperti segmen kode, segmen data, dll.) dari file target berbeda menjadi satu segmen berkelanjutan.
perpustakaan pemrosesan : Menghubungkan kode perpustakaan yang diperlukan oleh program dengan file objek. Linker dapat menangani dua jenis perpustakaan: perpustakaan statis dan perpustakaan dinamis.
Hasilkan file yang dapat dieksekusi: Hasil akhir berupa file executable yang dapat dijalankan di sistem operasi.
Tautan Statis DanTautan Dinamis Ini adalah dua mode kerja linker, masing-masing dengan karakteristik dan skenario penggunaan berbeda.
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:
kekurangan:
Ekstensi perpustakaan statis:
.lib
.a
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:
kekurangan:
Ekstensi perpustakaan dinamis:
.dll
(Perpustakaan Tautan Dinamis).so
(Objek Bersama)Pada sistem operasi yang berbeda, metode pembuatan pustaka tautan dinamis sedikit berbeda. Berikut beberapa langkah dan perintah umum:
Tulis kode perpustakaan:
Buat file sumber C yang berisi fungsi yang ingin kita tempatkan di perpustakaan dinamis.
// example.cpp
#include