2012-12-22 39 views
7

Khi biên dịch mã, một tệp đối tượng được tạo. Từ tệp đối tượng đó, một tệp thi hành được tạo trong quá trình liên kết.Tại sao tệp đối tượng cần thiết để tạo tệp thực thi?

Tại sao chúng ta cần tệp đối tượng? Việc sử dụng một tập tin đối tượng là gì? Không thể nào là một tệp thi hành được tạo trực tiếp? Sau khi tất cả, chúng tôi đang sử dụng một tập tin thực thi để chạy chương trình.

Trả lời

11

Tệp đối tượng là những gì mà trình liên kết sử dụng để xây dựng các tệp thi hành hoàn chỉnh (hoặc thư viện).

Bạn thường có thể có đầu ra trình biên dịch của bạn thực thi "trực tiếp", cú pháp sẽ phụ thuộc vào trình biên dịch. Ví dụ: với GCC:

gcc foo.c bar.c ... 

sẽ tạo tệp thực thi và không có tệp đối tượng trung gian (nhưng có thể sẽ được tạo - và sau đó bị xóa).

Tệp đối tượng được sử dụng để tạo bản dựng gia tăng. Bạn biên dịch từng tệp nguồn (hoặc nhóm các tệp nguồn) thành các tệp đối tượng, sau đó liên kết tất cả chúng với nhau trong một tệp thực thi. Điều này cho phép bạn chỉ biên dịch lại các tệp nguồn đã thay đổi kể từ lần cuối cùng bạn xây dựng, tiết kiệm rất nhiều thời gian. Hoặc bạn có thể sử dụng cùng một tệp đối tượng để liên kết các tệp thi hành khác nhau (sử dụng lại các phần của bản dựng của bạn để tạo cả tệp thực thi và thư viện được chia sẻ), một lần nữa tiết kiệm thời gian và tài nguyên so với việc biên dịch mọi thứ.

Tệp đối tượng không "cần" từ quan điểm lý thuyết. Chúng chỉ rất thực tế (và thực sự cần thiết về mặt kỹ thuật với một số công cụ (nhất?), Là những thứ mà người lắp ráp biết cách sản xuất và mối liên kết biết cách liên kết).

Các vấn đề liên quan