Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah Perbezaan Antara Perpustakaan Statik, Objek Dikongsi dan DLL dalam C/C ?

Apakah Perbezaan Antara Perpustakaan Statik, Objek Dikongsi dan DLL dalam C/C ?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 10:56:02520semak imbas

 What's the Difference Between Static Libraries, Shared Objects, and DLLs in C/C  ?

Membezakan Perpustakaan Statik, Objek Kongsi dan DLL dalam Pembangunan C/C

Memahami Perpustakaan Statik dan Dikongsi

Statik perpustakaan (fail.a) dimasukkan ke dalam aplikasi semasa fasa pemautan, di mana salinan keseluruhan perpustakaan disepadukan ke dalam boleh laku akhir. Akibatnya, aplikasi ini serba lengkap, dengan fungsi pustaka mudah diakses pada setiap masa.

Sebaliknya, objek kongsi (fail.so) hanya menjalani semakan keserasian masa jalan terhadap fail pengepala (.h) yang sepadan semasa menghubungkan. Ia tidak dimuatkan sehingga fasa masa jalan apabila diperlukan, memberikan kelonggaran untuk menggantikan fail ".so" tanpa menyusun semula aplikasi.

Perbezaan Antara Objek Dikongsi dan DLL

Walaupun kedua-dua objek kongsi dan perpustakaan pautan dinamik (DLL) berkongsi sambungan ".so", mereka mempamerkan beberapa perbezaan ketara pada sistem yang mematuhi Linux dan POSIX.

Objek yang dikongsi biasanya dimuatkan secara automatik apabila aplikasi bermula dan kekal tersedia sebagai entiti yang berasingan. DLL, bagaimanapun, memerlukan pemuatan eksplisit melalui panggilan dlopen() dalam aplikasi.

Arkib Dikongsi: Entiti Unik

Arkib yang dikongsi ialah perpustakaan statik yang tidak pernah digunakan secara langsung melalui aplikasi. Mereka bertindak sebagai perantara, membenarkan perpustakaan statik lain untuk menghubungkannya dengan mereka dan menggabungkan fungsi atau sumber tertentu ke dalam kod mereka sendiri. Arkib kongsi memerlukan bendera kompilasi khas (-fPIC dan -export-shared) untuk dikongsi dengan perpustakaan dinamik.

Nota Tambahan daripada Kemas Kini

Walaupun menyamakan objek kongsi dengan DLL , syarikat tempat penyoal bekerja menggunakan istilah "DLL" secara bahasa sehari-hari untuk merujuk kepada perpustakaan kongsi. Tambahan pula, sebutan "S" untuk arkib kongsi ialah konvensyen khusus syarikat dan bukannya standard industri.

Ringkasnya, perpustakaan statik menyediakan aplikasi serba lengkap, manakala objek kongsi menawarkan fleksibiliti masa jalan tanpa mengorbankan kebolehaksesan kod. Perkongsian arkib merapatkan jurang antara perpustakaan statik dan dikongsi, membolehkan fungsi dikongsi merentas berbilang modul.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Perpustakaan Statik, Objek Dikongsi dan DLL dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn