C/C++ 

[Học C++] BÀI 3 - Giới thiệu Compiler, Linker và Libraries

0 Replies

Trong bài trước, chúng ta đã tìm hiểu đến bước 3 trong quy trình lập trình với C++. Trong bài viết này, bạn sẽ được giới thiệu compiler (trình biên dịch), linker (trình liên kết), and libraries (thư viện) trong C++.

Bước 4: Biên dịch (compile) code của bạn

Để biên dịch một chương trình C++, chúng ta sử dụng trình biên dịch C++ (C++ compiler). Trình biên dịch C++ lần lượt xem qua từng tệp mã nguồn (.cpp) trong chương trình của bạn và thực hiện hai nhiệm vụ quan trọng:

Trước tiên, nó kiểm tra code của bạn để đảm bảo nó tuân theo các quy tắc của ngôn ngữ C++. Nếu không tuân theo, trình biên dịch sẽ báo lỗi cho bạn (và chỉ ra số dòng tương ứng) để giúp xác định vị trí cần sửa. Quá trình biên dịch cũng sẽ bị hủy bỏ cho đến khi lỗi được sửa chữa.

Thứ hai, nó dịch code C++ của bạn thành một tệp ngôn ngữ máy gọi là tệp đối tượng (object file). Tệp đối tượng thường được đặt tên là name.o hoặc name.obj, trong đó name là tên tương tự như tệp .cpp mà nó được tạo ra từ.
Nếu chương trình của bạn có 3 tệp .cpp, trình biên dịch sẽ tạo ra 3 tệp đối tượng:

[Image: ngcb2]

Có sẵn các trình biên dịch C++ cho nhiều hệ điều hành khác nhau. Chúng ta sẽ thảo luận về cách cài đặt trình biên dịch trong các bài sau.


Bước 5: Liên kết các tệp đối tượng và thư viện

Sau khi trình biên dịch tạo ra một hoặc nhiều tệp đối tượng, một chương trình khác được gọi là trình liên kết (linker) sẽ thực hiện công việc. Trình liên kết có ba nhiệm vụ chính:

Trước tiên, nó lấy tất cả các tệp đối tượng được tạo ra bởi trình biên dịch và kết hợp chúng thành một chương trình thực thi duy nhất.

[Image: ngcb2]

Thứ hai, ngoài việc liên kết các tệp đối tượng, trình liên kết cũng có khả năng liên kết các tệp thư viện. Một tệp thư viện là một bộ sưu tập mã đã được biên dịch trước và đã được "đóng gói" để tái sử dụng trong các chương trình khác.

Ngôn ngữ C++ cốt lõi (C++ core languages) thực tế là khá nhỏ gọn (và bạn sẽ học nhiều về nó trong các hướng dẫn này). Tuy nhiên, C++ cũng đi kèm với một thư viện đa dạng được gọi là Thư viện Chuẩn C++ (C++ standard library - thường được rút gọn thành thư viện chuẩn) cung cấp các chức năng bổ sung mà bạn có thể sử dụng trong chương trình của mình. Một trong những phần của thư viện chuẩn C++ được sử dụng phổ biến nhất là thư viện iostream, chứa các chức năng để in văn bản lên màn hình và nhận đầu vào từ bàn phím của người dùng. Hầu hết mọi chương trình C++ được viết sử dụng thư viện chuẩn theo một cách nào đó, vì vậy việc liên kết thư viện chuẩn vào chương trình của bạn là rất phổ biến. Hầu hết các trình liên kết sẽ tự động liên kết thư viện chuẩn khi bạn sử dụng bất kỳ phần nào của nó, vì vậy điều này thường không phải là điều bạn cần lo lắng.

Bạn cũng có thể tùy chọn liên kết các thư viện khác. Ví dụ, nếu bạn muốn viết một chương trình phát âm thanh, bạn có thể không muốn tự viết mã để đọc các tệp âm thanh từ đĩa, kiểm tra tính hợp lệ của chúng hoặc tìm cách định tuyến dữ liệu âm thanh đến hệ điều hành hoặc phần cứng để phát qua loa - điều đó sẽ là một công việc rất lớn! Thay vào đó, bạn có thể tải xuống một thư viện đã biết cách thực hiện những điều đó và sử dụng nó. Chúng ta sẽ nói về cách liên kết các thư viện (và tạo thư viện của riêng bạn!) trong phần phụ lục.

Thứ ba, trình liên kết đảm bảo tất cả các phụ thuộc chéo (cross-file dependencies) giữa các tệp khác nhau được giải quyết đúng cách. Ví dụ, nếu bạn định nghĩa một thứ gì đó trong một tệp .cpp và sau đó sử dụng nó trong một tệp .cpp khác, trình liên kết sẽ kết nối hai tệp lại với nhau. Nếu trình liên kết không thể kết nối một tham chiếu đến một định nghĩa, bạn sẽ nhận được một lỗi của trình liên kết, và quá trình liên kết sẽ bị hủy bỏ.

Sau khi trình liên kết hoàn tất việc liên kết tất cả các tệp đối tượng và thư viện (nếu mọi thứ diễn ra suôn sẻ), bạn sẽ có một tệp thực thi mà bạn có thể chạy!


Bước 6 & 7: Kiểm tra và Sửa lỗi

Ở bước này, bạn có thể chạy tệp thực thi của mình và xem liệu nó có tạo ra kết quả mà bạn mong đợi hay không!

Nếu chương trình của bạn chạy nhưng không hoạt động đúng, thì đến lúc phải sửa lỗi để tìm hiểu vấn đề là gì. Chúng ta sẽ thảo luận về cách kiểm tra chương trình và cách sửa lỗi một cách chi tiết hơn trong các bài tiếp theo.


Môi trường phát triển tích hợp (IDE)

Lưu ý rằng các bước 3, 4, 5 và 7 đều liên quan đến phần mềm (trình soạn thảo, trình biên dịch, trình liên kết, trình sửa lỗi). Mặc dù bạn có thể sử dụng các chương trình riêng biệt cho mỗi hoạt động này, một gói phần mềm được gọi là môi trường phát triển tích hợp (IDE) tổng hợp và tích hợp tất cả các tính năng này lại với nhau. Chúng ta sẽ thảo luận về IDE và cách cài đặt một IDE trong phần tiếp theo.

Biên tập: 5Phut.me

Tag: Phân biệt Compiler, Linker và Libraries trong C++, Cách sử dụng Compiler, Linker và Libraries trong C++; Tìm hiểu Compiler, Linker và Libraries trong C++; Hướng dẫn sử dụng Compiler, Linker và Libraries trong C++; Các lỗi thường gặp khi sử dụng Compiler, Linker và Libraries trong C++; Tối ưu hóa Compiler, Linker và Libraries trong C++; Các tính năng mới của Compiler, Linker và Libraries trong C++; Bảo mật Compiler, Linker và Libraries trong C++; Cập nhật Compiler, Linker và Libraries trong C++; Đánh giá hiệu suất của Compiler, Linker và Libraries trong C++



Thành viên đang xem chủ đề: 1 Khách