libglib2 충돌 없이 i386, armel, armhf, arm64 및 mips로 크로스 컴파일하기 위한 환경 설정

libglib2 충돌 없이 i386, armel, armhf, arm64 및 mips로 크로스 컴파일하기 위한 환경 설정

Debian Jessie에서 패키지의 빌드 환경을 설정하려고 합니다. 소프트웨어의 amd64, i386 및 최종 armel 및 armhf 바이너리를 생성해야 합니다. 데비안이 지원하는 모든 아키텍처로 크로스 컴파일할 수 있다면 정말 좋겠지만, 이 4가지가 제가 특히 걱정하는 아키텍처입니다.

나는 amd64 Debian Jessie로 시작하고 i386 멀티 아키텍처를 추가했습니다.

libpulse-dev소프트웨어의 종속성인 를 설치해야 할 때까지는 모든 것이 잘 작동했습니다 . 설치할 때 받았어요

다음 패키지에는 충족되지 않은 종속성이 있습니다. libpulse-dev :libglib2.0-dev에 의존하지만 설치되지 않습니다.

그리고 apt-get그리고

다음 패키지에는 충족되지 않은 종속성이 있습니다. libglib2.0-dev: 충돌: libglib2.0-dev:i386이지만 2.42.1-1이 설치되어 있습니다.

그리고 aptitude.

libglib2:amd64충돌이 있는 것 같습니다 libglib2:i386. 동시에 설치할 수 없습니다. Freenode의 누군가가 #debian이것이 다중 아키텍처의 잘 알려진 한계라고 말했습니다.

i386을 빌드하려면 이 패키지를 설치해야 합니다.

i386 multiarch가 작동하지 않기 때문에 제거하고 i386 chroot를 설정하고 해당 chroot 내에 i386 버전의 소프트웨어를 구축하는 것을 고려하고 있습니다.

이 chroot 솔루션은 i386에서 작동해야 하지만 armel, armhf, arm64, mips 및 기타 모든 아키텍처에 대한 바이너리를 생성할 때는 작동하지 않습니다. armel, armhf, arm64, mips에서는 이러한 빌드를 만들 수 없습니다. 내 프로세서에서 arm 및 mips 실행 파일을 실행할 수 없기 때문에 chroots 등이 있습니다.

동일한 Debian Jessie 시스템에서 amd64, i386, armel, armhf, arm64 및 mips 아키텍처용 소프트웨어 빌드를 일관된 방식으로 생성하는 방법(즉, 모든 빌드는 "하나의 아키텍처 빌드를 chrooting"하는 대신 동일한 방식으로 수행됨) 아키텍처는 멀티 아키텍처를 사용하여 구축됩니다.") libglib2멀티 아키텍처를 사용할 때와 같이 충돌이 발생하지 않습니까?

답변1

불행하게도 glib2.0(아직 다중 아키텍처와 호환되지 않음) 구독할 수 있습니다.https://bugs.debian.org/648621사물을 계속 주시하고 싶다면.

다양한 아키텍처를 위한 소프트웨어를 구축하려면 다음을 사용할 수 있습니다.pbuilder그리고/또는qemubuilder. 데비안은 Qemu를 사용하여 다양한 아키텍처에서 바이너리를 실행하는 chroot를 훌륭하게 지원합니다 debootstrap.

답변2

종속성에 대해 다중 아키텍처 크로스 컴파일을 사용하지만 각 대상 아키텍처에 대해 전용 chroot를 사용하여 두 가지 접근 방식을 결합할 수 있습니다.

이렇게 하면 충돌 문제가 많이 발생하지 않습니다. 귀하의 패키지에서 작동할 것이라고 보장할 수는 없지만 동일한 루트 파일 시스템에서 모든 작업을 수행하는 것보다 더 나은 기회가 있습니다.

관련 정보