>시스템 튜토리얼 >리눅스 >PC 컴파일 커널 및 설정을 설정하는 방법: 컴파일 설정

PC 컴파일 커널 및 설정을 설정하는 방법: 컴파일 설정

WBOY
WBOY앞으로
2024-03-13 14:52:02797검색

PC 컴파일 커널 및 설정을 설정하는 방법: 컴파일 설정

이것은 무료 소프트웨어입니다. 복사 조건은 소스를 참조하세요. 없습니다

보증은 상품성이나 특정 목적에 대한 적합성에 대해서도 적용되지 않습니다.

참고: 팔 도구 체인은 여기에서 다운로드할 수 있습니다. 보려면 "ARM"이라고 답하세요.

2. 컴파일 대상 설정

커널을 구성하거나 컴파일하기 전에 먼저 대상 CPU 아키텍처와 컴파일 시 사용할 도구 체인을 결정해야 합니다. 가장 먼저 결정해야 할 가장 기본적인 정보입니다.

현재 사용하고 있는 PC용 커널을 컴파일하는 경우에는 설정할 필요가 없습니다.

그렇지 않은 경우 임베디드 Linux 교육의 경우 명확하게 설정해야 합니다.

여기에서는 팔을 예로 들어 설명하겠습니다.

두 가지 설정 방법이 있습니다():

a)메이크파일 변경

커널 소스 루트 디렉터리에서 Makefile을 열고 다음 두 Makefile 변수를 변경한 후 저장합니다.

ARCH:=팔

CROSS_COMPILE:=arm-linux-

여기서 cross_compile 설정은 사용되는 크로스 툴 체인의 gcc 프로그램 이름이 arm-linux-gcc라고 가정합니다. 사용된 실제 gcc 이름이 some-thing-else-gcc인 경우에는 some-thing-else-를 입력하세요. 어쨌든 gcc의 마지막 세 글자는 이름에서 생략해야 합니다.

b) make 명령을 실행할 때마다 이 정보는 명령줄 매개변수를 통해 전달됩니다.

make 도구에 대한 명령줄 인수를 통해 변수 값을 지정하는 것에 관한 것 같습니다.

예를 들어

커널을 구성할 때

를 사용하세요.

makeARCH=armCROSS_COMPILE=arm-linux-menuconfig

커널 컴파일 시 사용

makeARCH=armCROSS_COMPILE=arm-linux-

실제로 PC 커널을 컴파일할 때 사용자가 명시적으로 설정하지 않더라도 이 두 항목이 구성되지 않는다는 의미는 아닙니다. 왜냐하면 사용자가 이 두 항목을 설정하지 않으면 커널 소스코드 상단(소스코드 루트 디렉터리에 위치)에 있는 Makefile이 다음과 같은 방법을 통해 이 두 변수의 값을 생성하게 되기 때문이다.

SUBARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc64/

-es/arm.*/arm/-es/sa110/arm/

-es/s390x/s390/-es/parisc64/parisc/

-es/ppc.*/powerpc/-es/mips.*/mips/

-es/sh[234].*/sh/)

ARCH?=$(SUBARCH)

CROSS_COMPILE?=

이전 코드를 통해 ARCH는 PC컴파일러의 아치, 즉 SUBARCH가 되었습니다. 따라서 PC에서 uname-m의 출력이 ix86이라면 ARCH의 값은 i386이 된다.

CROSS_COMPILE 값은 구성되지 않은 경우 빈 문자열입니다. 이렇게 하면 사용되는 툴체인 프로그램의 이름에 더 이상 arm-linux-와 같은 접두사가 붙지 않습니다. 이는 PC에서 gcc를 사용하는 것과 동일합니다.

마지막으로 몇 마디만 더 말씀드리자면, ARCH의 가치는 더욱 일반화될 필요가 있습니다. 커널 소스코드의 아치 디렉터리에는 i386 디렉터리도 없고, sparc64 같은 디렉터리도 없기 때문이다.

그래서 최상층 makefile에 SRARCH 변수가 생성되고, 그 값은 다음 코드를 통해 생성됩니다. 이러한 방식으로 SRCARCH 변수는 최종적으로 커널 소스 코드 아치 디렉터리의 특정 아키텍처 이름과 일치합니다.

SRARCH:=$(ARCH)

ifeq($(ARCH),i386)

SRARCH:=x86

엔디프

ifeq($(ARCH),x86_64)

SRARCH:=x86

엔디프

ifeq($(ARCH),sparc64)

SRARCH:=스파르크

엔디프

ifeq($(ARCH),sh64)

SRARCH:=sh

엔디프

3. 커널 구성

커널에는 어떤 부분이 필요한지, 각 부분이 어떻게 컴파일되는지(커널 또는 모듈로), 각 부분의 작동 매개변수는 무엇인지 모두 구성할 수 있나요? 이를 위해 컴파일을 시작하기 전에 구성 목록을 생성하여 커널 소스 루트 디렉터리에 배치하고 이름을 .config 파일로 지정한 다음 이 .config 파일에 따라 필요한 커널을 컴파일해야 합니다.

하지만 커널에 구성 항목이 너무 많아서 환경 변수를 하나씩 설정하기 위해 Linux를 구성하는 것은 너무 번거롭습니다. 또한 다양한 CPU 아키텍처에 대해 구성할 수 있는 구성 항목 세트 Linux 커널의 arm 인터럽트 구현에 대한 자세한 설명 이 다릅니다. 예를 들어, 특정 CPU의 특정 기능을 지원해야 하는지 여부의 구성 항목 리눅스 커널의 arm 인터럽트 구현에 대한 자세한 설명 은 CPU 아키텍처와 관련된 구성 항목입니다. 따라서 커널은 간단한 구성 방법을 제공합니다.

팔을 예로 들어 구체적인 방법은 다음과 같습니다.

a) 대상 CPU 아키텍처에 따라 커널 소스 코드 arch/arm/configs 디렉터리에서 대상 시스템에 가장 가까운 구성 파일(예: s3c2410_defconfig)을 찾아 커널 소스 코드 루트 디렉터리에 복사한 다음 이름을 .config로 지정하세요.

참고로, 현재 PC용 커널을 컴파일하는 경우 초기 구성 파일로 다음 파일을 커널 소스 루트 디렉터리에 복사하는 것이 가장 좋습니다. 이 파일은 현재 PC에서 실행 중인 커널을 컴파일할 때 사용되는 구성 파일입니다.

/lib/modules/`uname-r`/build/.config

몇 마디만 말하면 PC 커널 구성 파일에는 선택할 수 있는 기능이 너무 많습니다. 컴파일하지 않으면 알 수 없고, 컴파일해야만 알 수 있습니다. 이를 수행하는 Linux 게시자의 목적은 자신이 배포하는 Linux가 사용자의 다양한 요구를 충족하도록 만드는 것일 수 있습니다.

b) makemenuconfig를 실행하여 이 구성에 필요한 일부 변경을 수행하고 종료 시 저장을 선택하면 새 구성이 .config 파일로 업데이트됩니다.

참고

위 내용은 PC 컴파일 커널 및 설정을 설정하는 방법: 컴파일 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 itcool.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제