Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C Linking Menggabungkan Fail Objek dan Perpustakaan menjadi Boleh Laku?

Bagaimanakah C Linking Menggabungkan Fail Objek dan Perpustakaan menjadi Boleh Laku?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 00:39:12337semak imbas

How Does C   Linking Combine Object Files and Libraries into an Executable?

Cara C Linking Berfungsi dalam Amalan

Ikhtisar

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.

Penempatan Semula Alamat

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.

Maklumat Penempatan Semula

Fail objek memberikan maklumat penempatan semula kepada pemaut. Setiap entri penempatan semula termasuk alamat dalam fail objek yang perlu dipindahkan dan simbol sasaran.

Peranan Pemaut

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.

Fail Boleh Laksana

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.

Contoh

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!

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