Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C Linking Menggabungkan Fail Objek dan Perpustakaan menjadi Boleh Laku?
C linking ialah proses menggabungkan berbilang fail objek (.o) dan perpustakaan (.a) ke dalam satu fail boleh laku. Tidak seperti kompilasi, yang menterjemahkan kod sumber ke dalam fail objek, pemautan menyelesaikan simbol yang tidak dapat diselesaikan, menempatkan semula alamat dan memastikan bahawa boleh laku akhir sedia untuk dilaksanakan.
Salah satu fungsi penting bagi pemautan ialah penempatan semula alamat. Setiap fail objek mengandungi rujukan kepada simbol luaran, seperti fungsi dan data yang diisytiharkan dalam fail lain. Semasa memaut, pemaut mengira alamat akhir simbol ini dan melaraskan kod fail objek dan bahagian data sewajarnya.
Fail objek memberikan maklumat penempatan semula kepada pemaut. Setiap entri penempatan semula termasuk alamat dalam fail objek yang perlu dipindahkan dan simbol sasaran.
Penyambung membaca entri penempatan semula daripada semua fail dan pustaka objek. Ia menyelesaikan simbol yang tidak dapat diselesaikan dengan mencari definisinya dalam fail atau perpustakaan input lain. Ia kemudian mengira alamat akhir semua simbol dan mengemas kini entri penempatan semula.
Setelah semua simbol telah diselesaikan dan alamat telah dipindahkan, penyambung menggabungkan fail objek individu ke dalam fail boleh laku tunggal. Boleh laku ini mengandungi kod dan data yang diperlukan untuk program berjalan pada platform sasaran.
Pertimbangkan program C berikut:
// main.cpp #include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; }
Apabila program ini disusun, ia menghasilkan dua fail objek: main.o dan cout.o. Fail objek main.o mengandungi kod untuk fungsi utama, manakala cout.o mengandungi pelaksanaan << operator untuk std::cout.
Semasa memaut, pemaut membaca entri penempatan semula daripada kedua-dua fail objek. Ia menyelesaikan rujukan kepada std::cout dengan mencari takrifnya dalam cout.o. Pemaut juga mengemas kini rujukan alamat dalam main.o untuk menunjuk ke alamat std::cout yang betul dalam fail boleh laku.
Boleh laku terakhir, dinamakan a.out, mengandungi kod gabungan daripada kedua-dua fail objek dan sedia untuk dilaksanakan.
Atas ialah kandungan terperinci Bagaimanakah C Linking Menggabungkan Fail Objek dan Perpustakaan menjadi Boleh Laku?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!