Walaupun keduanya disebut "linker" dan digunakan untuk menautkan binari, saya tidak dapat benar-benar mengetahui perbedaannya. Adakah yang bisa memberi tahu saya perbedaan mereka?
Tanpa terlalu teknis: Keduanya adalah "penghubung", yaitu alat yang menggabungkan / memuat sepotong kode yang dikompilasi dengan / menjadi bagian lain dari kode yang dikompilasi.
ld
adalah penghubung statis, sedangkan ld.so
penghubung dinamis.
Surat so
- surat itu, saya percaya, adalah kependekan dari "objek bersama", dan Anda biasanya akan melihatnya sebagai akhiran nama file dari pustaka bersama, yaitu pustaka yang dapat dihubungkan secara dinamis ke dalam program (satu pustaka "dibagi" di antara beberapa program) . Sebaliknya, perpustakaan statis sering memiliki akhiran nama file .a
, untuk "arsip" (dibuat oleh ar
utilitas).
Penghubung statis menautkan program atau pustaka pada waktu kompilasi, biasanya sebagai langkah terakhir dalam proses kompilasi, membuat biner yang dapat dieksekusi atau pustaka. Dalam kasus file executable biner, mungkin biner statis dengan semua perpustakaan dimuat ke dalam biner itu sendiri, atau mungkin biner yang terkait secara dinamis dengan hanya beberapa perpustakaan yang terhubung secara statis.
Tautan dinamis memuat pustaka yang secara dinamis ditautkan pada waktu kompilasi ke dalam ruang alamat proses pada saat run-time.
Lihat manual untuk ld
dan ld.so
di sistem Anda.