Sự khác biệt giữa các lựa chọn giữa những người dùng khác nhau giữa những người khác nhau trong các bộ lọc Linux và Kconfig là gì?


11

Sự khác biệt trong các phụ thuộc giữa selectdepends ontrong các tệp Kconfig hạt nhân là gì?

config FB_CIRRUS
tristate "Cirrus Logic support"
depends on FB && (ZORRO || PCI)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
This enables support for Cirrus Logic GD542x/543x based boards on
Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.

Trong ví dụ trên, làm thế nào có FB_CIRRUSliên quan khác FB && (ZORRO || PCI)với nó FB_CFB_FILLRECT, FB_CFB_COPYAREAFB_CFB_IMAGEBLIT?

Cập nhật

Tôi đã nhận thấy rằng depend onkhông thực sự làm nhiều về thứ tự biên dịch.

Ví dụ. Việc xây dựng AppB thành công phụ thuộc vào LibB được liên kết tĩnh để được xây dựng trước. Cài đặt depends on LibBtrong Kconfig cho AppB sẽ không buộc LibB được xây dựng trước. Thiết lập select LibBsẽ.

Câu trả lời:


17

depends oncho biết (các) ký hiệu phải được chọn tích cực ( =y) để tùy chọn này được định cấu hình. Ví dụ: depends on FB && (ZORRO || PCI)phương tiện FBphải được chọn và (&&) ZORROhoặc (||) PCI. Đối với những thứ như make menuconfig, điều này xác định liệu một tùy chọn sẽ được trình bày hay không.

selecttích cực thiết lập một biểu tượng. Ví dụ, select FB_CFB_FILLRECTsẽ có nghĩa FB_CFB_FILLRECT=y. Điều này đáp ứng sự phụ thuộc tiềm năng của một số tùy chọn cấu hình khác. Lưu ý rằng các tài liệu kernel không khuyến khích việc sử dụng biểu tượng này cho các biểu tượng "hiển thị" (có thể được chọn / bỏ chọn bởi người dùng) hoặc cho các biểu tượng mà bản thân chúng có phụ thuộc, vì chúng không được kiểm tra.

Tham khảo: https://www.kernel.org/doc/Documentation/kbuild/kconfig-lingu.txt


3

depends có nghĩa là tùy chọn chỉ hiển thị trong menu nếu các điều kiện tiên quyết của nó (cấu trúc boolean đằng sau nó) được đáp ứng.

selectcó nghĩa là, khi người dùng chọn tùy chọn này, tùy chọn được cung cấp làm đối số selectsẽ được chọn tự động.


1

Tôi thích nghĩ về là:

  • selectlà một "tập hợp con" của depends, khi chỉ có một phụ thuộc có thể có cho một tính năng.

    Vì chỉ có một phụ thuộc có thể, selectchỉ cần tự động chọn tùy chọn đó và giúp bạn tiết kiệm công việc chọn phụ thuộc thủ công trước.

    Tự động hóa này là những gì bạn có được từ hạn chế tập hợp con chỉ có một phụ thuộc có thể.

  • depends nói chung hơn và hoạt động trong trường hợp một tính năng phụ thuộc vào giao diện có nhiều triển khai.

    Ví dụ: vào ngày 4.15, có 2 triển khai BPF: Cổ điển và Mở rộng.

    Do đó, BPF_JITtính năng này phụ thuộc vào ít nhất một trong số các triển khai được bật:

    config BPF_JIT
        depends on HAVE_CBPF_JIT || HAVE_EBPF_JIT
    

    Vì có hai triển khai có thể có BFP_JIT, Kconfig không thể tự động chọn đúng.

    Đôi khi tôi ước mình có thể nói: "nếu không có sự phụ thuộc nào được đáp ứng, hãy chọn cái này theo mặc định", điều đó sẽ cho phép tự động hóa thêm công cụ.

Ngoài ra còn có "một cái gì đó ẩn một tùy chọn khác trên các hiệu ứng menuconfig", nhưng đây chỉ là những trò đùa :-)

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.