Các tệp `some_name.o.cmd` là gì?


8

Các some_name.o.cmdtệp mà tôi thấy trong mã hạt nhân của Linux là gì? chúng được tạo tự động?

Câu trả lời:


3

Từ cấu hình và cấu hình Kernel trong Linux 2.5 (phần tôi trích dẫn các giao dịch với các thay đổi mang lại trong hạt nhân 2.5 / 2.6):

Biên dịch các đối tượng và mô-đun tích hợp trong một lần chạy, nhận ra các đối số dòng lệnh đã thay đổi [...]

Vấn đề hiệu năng chính cho việc xây dựng kernel là các yêu cầu tạo ra (phần lớn thời gian dĩ nhiên là dành cho việc biên dịch / liên kết, nhưng chi phí này không phụ thuộc vào hệ thống xây dựng được sử dụng). thực hiện phải đọc tệp Make-local cục bộ, các quy tắc chung và tất cả các phụ thuộc và tìm ra công việc sẽ được thực hiện từ đó. Do đó, một cách rõ ràng để tối ưu hóa hiệu suất của hệ thống xây dựng là để tránh các yêu cầu không cần thiết. [...]

Một lược đồ linh hoạt hơn để xử lý các dòng lệnh thay đổi trong GNU make đã được tạo. Việc sử dụng thực tế khá đơn giản, thay vì viết lệnh trực tiếp vào phần lệnh của quy tắc, thay vào đó, nó được gán cho biến cmd_link_l_targetvà hệ thống xây dựng đảm nhiệm việc thực hiện lệnh khi cần thiết, theo dõi các thay đổi của chính dòng lệnh . Việc thực hiện hoạt động như sau. Sau khi thực hiện lệnh, macro if_changed, ghi lại dòng lệnh vào tệp .<target>.cmd. Khi make được gọi lại trong quá trình xây dựng lại, nó sẽ bao gồm các .*.cmdtệp đó. Khi nó cố gắng quyết định có xây dựng lại hay không L_TARGET, nó sẽ tìm thấy FORCEtrong các điều kiện tiên quyết, điều này thực sự buộc nó phải luôn chạy lại phần lệnh của quy tắc.

Về cơ bản, đây là tối ưu hóa biên dịch kernel. Những tập tin này được sử dụng để ngăn chặn hoạt makeđộng quá nhiều khi không cần thiết. Như bạn có thể đọc ở trên, một some_name.o.cmdtệp sẽ ở đó để theo dõi những gì đã được thực hiện / cần phải được thực hiện khi biên soạn some_name.o.

Để biết thêm thông tin, hãy xem phần 4.5 của tài liệu tôi đã liên kết trước đó ( Có gì mới trong kbuild của Linux-2.5 / 2.6? ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.