🌱 Quá trình Linking

🌱 Quá trình Linking

    Như các bạn biết thì sau quá trình biên dịch (compile) thì các file object sẽ được thu thập và kết hợp bằng quá trình gọi là Linking, để tạo ra file thực thi .exe cuối cùng. Mình có một số chia sẻ về phần này để ôn lại + mọi người góp ý ♥

    Linking trong Build Process: Link truy cập

👉 Linker giúp cho các hàm trong thư viện nằm trong chương trình bằng 2 cách:

  1. Sao chép chương trình các hàm trong thư viện vào object code trong thời gian compile
    => Static Linking.
  2. Đặt tên của thư viện đó trong file nhị phân và linking trong quá trình run-time
    => Dynamic Linking.

    🌱 Static Linking

    Link chương trình của bạn với một thư viện vào thời gian Compile, như vậy chương trình thư viện sẽ là một phần trong ứng dụng.

    ➕ Như vậy so với Dynamic Linking thì Static không cần đọc tên của thư viện sau đó mới link. 👉 Nó làm chương trình nhanh hơn.

    ➕ Vì các thư viện luôn nằm trong ứng dụng của bạn, nên không cần bận tâm về việc những người dùng luôn có cùng version với hệ thống 😃

    ➖ Tuy nhiên việc đưa cả cái code library vào object code khiến cho file nhị phân quá lớn 👉 chiếm nhiều ổ đĩa + bộ nhớ.

    ➖ Nếu muốn thay đổi file thư viện thì không có cách nào khác ngoài việc re-build lại cả chương trình. 👉 Vậy thì mệt hơn mà thời gian fix bug cũng dài hơn.

    🌱 Dynamic Linking

    Cái này thì sẽ dừng quá trình linking cho đến khi chương trình bắt đầu chạy, khi đó thư viện sẽ được load vào bộ nhớ.

    Trong file nhị phân sẽ có một ký hiệu + tên báo là chỗ này chưa được link 😃 và nó sẽ nhảy đến và link trong thời gian run-time.

    ➕ Khi muốn re-compile lại chương trình sử dụng thư viện này, thì chỉ có code mới được compile 👉 Phần mềm đỡ phải re-compile với mỗi phiên bản của thư viện :v

    ➕ Khác với static linking, dynamic sẽ có kích thước file nhị phân nhỏ hơn. 👉 Đem lại hiệu quả về mặt sử dụng ổ đĩa, và thỉnh thoảng có vài pha nhanh hơn trong quá trình run-time.

    ➕ Nó lưu trong ổ đĩa / bộ nhớ ảo và thư viện chỉ được ánh xạ tới các process khi cần 👉 giúp cải thiện hiệu suất và tiết kiệm bộ nhớ vật lý cũng như thông lượng hệ thống.


    *** Bài viết còn thiếu xót mong mọi người góp ý để mình cải thiện về kiến thức nhiều hơn cũng như viết bài sau về cái này 😃

>>>= Follow ngay =<<<

💚 Kênh Youtube Lập trình - Điện tử 💚

Để nhận được những bài học miễn phí mới nhất nhé 😊

Đăng nhận xét

Mới hơn Cũ hơn