Linux 커널 Kconfig에서 “select”와 “depends”의 차이점은 무엇입니까? 어떻게되어 FB_CIRRUSdiffrently에

커널 Kconfig 파일 간의 종속성 select과 차이점은 무엇입니까 depends on?

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.

위의 예에서, 어떻게되어 FB_CIRRUSdiffrently에 관한 FB && (ZORRO || PCI)그것이보다는 FB_CFB_FILLRECT, FB_CFB_COPYAREA그리고 FB_CFB_IMAGEBLIT?

최신 정보

depend on컴파일 순서와 관련하여 실제로 많은 것을 하지 않는 것으로 나타났습니다 .

예를 들어. AppB를 성공적으로 빌드하려면 정적으로 링크 된 LibB를 먼저 빌드해야합니다. depends on LibBAppB에 대한 Kconfig 설정 은 LibB를 먼저 빌드하지 않습니다. 설정 select LibB합니다.



답변

depends on=y이 옵션을 구성 하려면 기호가 이미 양수로 선택되어 있어야 함 ()을 나타냅니다 . 예를 들어, depends on FB && (ZORRO || PCI)means FB가 선택되어 있어야하고 (&&) ZORRO또는 (||) 중 하나가 선택되어 있어야합니다 PCI. 와 같은 make menuconfig경우 옵션을 표시할지 여부를 결정합니다.

select긍정적으로 기호를 설정합니다. 예를 들어 select FB_CFB_FILLRECT의미 FB_CFB_FILLRECT=y합니다. 이는 다른 구성 옵션의 잠재적 인 종속성을 충족시킵니다. 커널 문서는 “보이는”기호 (사용자가 선택 / 선택 해제 할 수 있음) 또는 종속성이있는 기호에 대해서는 이를 사용하지 않는 것이 좋습니다.

참조 : https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt


답변

depends 이는 전제 조건 (뒤의 부울 구성)이 충족 된 경우에만 메뉴에 옵션이 표시됨을 의미합니다.

select즉, 사용자가이 옵션을 선택하면 인수로 지정된 옵션 select이 자동 선택됩니다.


답변

나는 다음과 같이 생각하고 싶다.

  • selectdepends기능에 대해 가능한 종속성이 하나 뿐인 경우 “의 하위 집합”입니다 .

    가능한 종속성은 하나뿐이므로 select해당 옵션을 자동으로 선택하고 먼저 수동으로 종속성을 명시 적으로 선택하는 작업을 저장합니다.

    이 자동화는 오직 하나의 가능한 의존성을 갖는 서브셋 제한으로부터 얻는 것입니다.

  • depends 더 일반적이며 기능이 여러 구현이있는 인터페이스에 의존하는 경우에 작동합니다.

    예를 들어, 4.15에는 Classic 및 Extended의 두 가지 BPF 구현이 있습니다.

    따라서이 BPF_JIT기능은 사용 가능한 구현 중 하나 이상에 따라 다릅니다.

    config BPF_JIT
        depends on HAVE_CBPF_JIT || HAVE_EBPF_JIT
    

    에 대한 두 가지 가능한 구현이 있기 때문에 BFP_JITKconfig가 올바른 것을 자동으로 선택할 수 없었습니다.

    때로는 “종속성이 충족되지 않으면 기본적으로 이것을 선택하십시오”라고 말하면 더 자동화 할 수 있습니다.

“menuconfig에 다른 옵션이 숨겨져있는”효과도 있지만, 이들은 단지 보풀입니다 🙂