소스에서 데비안 패키지 크로스 컴파일

소스에서 데비안 패키지 크로스 컴파일

소스에서 패키지를 빌드하기 위해 다음 레시피를 따랐습니다.

echo "deb-src http://archive.ubuntu.com/ubuntu focal main" >> /etc/apt/sources.list
echo "deb-src http://archive.ubuntu.com/ubuntu focal-updates main" >> /etc/apt/sources.list
apt update

apt source package
apt build-dep -y package

cd package/
dpkg-buildpackage

aarch64 호스트의 amd64 대상에 대해 이 패키지를 크로스 컴파일하고 싶습니다. 어떤 부분을 수정해야 할까요?

예를 들어 다음과 같이 시작할 수 있습니다.

# basically, set up the apt repos for both amd64 and aarch64 
sed -i '/^deb / {p; s/^deb /deb [arch=arm64] /}' /etc/apt/sources.list
sed -i 's,^deb http://ports.ubuntu.com/ubuntu-ports/,deb [arch=amd64] http://archive.ubuntu.com/ubuntu/,' /etc/apt/sources.list

echo "deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu focal main" >> /etc/apt/sources.list
echo "deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu focal-updates main" >> /etc/apt/sources.list
dpkg --add-architecture amd64
apt update

# install the cross compiler
apt install -y gcc-x86-64-linux-gnu

apt source package:amd64
apt build-dep -y package:amd64

cd package/
dpkg-buildpackage --target-arch=amd64

그러나 이것은 불완전한 것 같습니다. 예를 들어, Linux 커널을 구축하는 경우 다음 dpkg-buildpackage과 같은 종속성이 누락되었다고 불평하고 다음을 libudev-dev호출합니다.make ARCH=arm64 CROSS_COMPILE=주인목표가 아닌 아키텍처.

답변1

주제에 대한 오래된 질문은 다음과 같습니다.데비안 패키지를 크로스 빌드하는 방법.

tshepang의 대답은 using을 가리킵니다 dpkg-buildpackage --host-arch=amd64. --target-arch=이것은 널리 사용되는 정의에 따르면 나에게 반직관적입니다.주인그리고표적그러나 크로스 컴파일할 때데비안은 약간 다른 명명법을 가지고 있습니다, target-arch컴파일러 등을 빌드할 때만 사용됩니다.

예를 들어, Linux 커널을 구축하는 경우 다음과 같은 종속성이 dpkg-buildpackage누락되었다고 불평합니다 libudev-dev.

문제를 해결했지만 일부 종속성이 누락된 --no-check-builddeps이유를 파악하지 못했습니다 .dpkg-buildpackage

관련 정보