Linux 커널을 크로스 컴파일하는 방법은 무엇입니까?

Linux 커널을 크로스 컴파일하는 방법은 무엇입니까?

AArch64용 Linux 크로스 컴파일 방법을 알아내려고 며칠은 아니더라도 몇 시간을 보냈습니다.

이 작업을 수행하기 위해 가상 머신에서 Ubuntu를 사용하고 있지만 제가 찾은 모든 가이드가 제대로 작동하지 않습니다. 그들 중 대부분은 최종 사용자가 데비안을 가지고 있고 이름이 다르다고 가정합니다. 구성 파일을 만들 수 있게 된 후에는 사용할 수 없었습니다. 를 입력했을 때 make, menuconfig를 사용하여 구성 파일을 저장했음에도 불구하고 x86 기반 시스템에 대한 설문지를 받았습니다. 그런 다음 ARCH및 매개변수를 지정했고 CROSS_COMPILE내 빌드 목표에 중요한 많은 항목을 건너뛴 또 다른 설문지를 받았습니다.

그런 다음 Ubuntu VM을 다시 설치해야 했기 때문에 크로스 컴파일이 작동하려면 무엇을 설치해야 하는지, 매개 변수를 어떻게 지정했는지 전혀 몰랐습니다 CROSS_COMPILE. 컴파일러를 설치했지만(Ubuntu에서 어떻게 호출되는지 알아내느라 몇 시간을 보냈습니다) 크로스 컴파일을 지정할 때가 되면 이름이 달라집니다. 어쩌면 내가 뭔가를 건너 뛰었을 수도 있습니다.

네, 여러 번 검색했는데 대부분의 가이드에서는 사용자가 꽤 모호한 내용을 많이 알고 있다고 가정합니다. 그들 중 상당수는 심지어 10살이 넘은 사람들이기도 합니다.

답변1

Ubuntu에서 AArch64 커널을 크로스 컴파일하려면 를 설치 gcc-aarch64-linux-gnu하고 빌드를 실행해야 합니다.

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- ...

그러므로

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

구성 및

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- all

커널과 모듈을 빌드합니다.

필요한 옵션을 찾을 수 없으면 /in을 사용 menuconfig하여 찾으세요. 그러면 활성화해야 할 다른 항목이 표시됩니다.

(이 지침은 Debian과 동일합니다. Debian과 Ubuntu의 핵심 크로스 컴파일러 패키지 이름은 이제 동일합니다.)

관련 정보