2010-06-12 3 views
4

32 비트 Ubuntu를 기반으로하며 gcc로 컴파일 된 실행 파일을 포함하고있는 내 .deb 패키지가 64 비트 버전의 OS에 설치되지 않습니다 (오류 메시지에 '잘못된 아키텍처 i386'이 표시됨). 이것은 일반적인 32 비트 소프트웨어가 64 비트 하드웨어에서 작동한다고 생각했기 때문에 혼란 스럽습니다.왜 32 비트 .deb 패키지가 64 비트 우분투에 설치되지 않습니까?

내 32 비트 컴퓨터를 사용하여 64 비트 OS에 설치할 수있는 .deb 파일을 만들 수 있습니까? 실행 파일을 생성하기 위해 적절한 컴파일러 플래그를 사용하는 것인가 (그렇다면 무엇인지), 아니면 하나의 프로세서 아키텍처에 특정한 .deb 파일 자체입니까?

답변

6

충돌 설치 아키텍처 : 필드에 (올바르게) 라벨이 지정되어 있기 때문에 deb 설치 프로그램이 패키지 설치를 거부했을 수 있습니다. i386 코드는 amd64 시스템에서 실행될 수 있지만 모든 적절한 종속성 (32 비트 라이브러리 등)이 있어야합니다. 각 아키텍처에 대해 별도의 패키지를 만드는 것이 좋습니다.

예, 32 비트 시스템에서 64 비트 용으로 빌드 할 수 있습니다. 크로스 컴파일 (cross-compiling)이라고하며이를 위해 빌드 환경을 만들어야합니다. 시작하려면 dpkg-cross 및 apt-cross 도구를 찾으십시오.

또는 64 비트 OS를 실행하는 가상 시스템을 설치하고 거기에서 보조 아키텍처를 빌드 할 수 있습니다.

2

아키텍처는 debian 패키지의 설정 파일에있는 옵션입니다. 기본적으로 uname에서 가져온 것을 사용합니다. 당신은 그것을 무시할 수 있지만 더 쉬운 방법이 있습니다.

일반적으로 대부분의 32 비트 프로그램은 64 비트에서 정상적으로 실행됩니다. 그러나 아주 오래된 PC가 없으면 가상 머신 가상 머신에 미니 64 비트 데비안을 설치하는 것도 매우 쉽습니다. 당신은 아마 base + build essentials + dev 라이브러리 만 필요합니다. 이렇게하면 많은 디스크 공간이 필요하지 않습니다. 2G 디스크 공간을 절약 할 수 있다면 데스크톱 데비안을 설치하기 만하면됩니다.

다양한 자동화 기능을 갖춘 크로스 컴파일을 수행하는 옵션이 더 있습니다.

나는 virtualbox 방법을 정기적으로 사용합니다. 쉽고 빠릅니다.

32 비트 환경을 만드는 64 비트 Linux를 실행하는 경우 mkdebootstrap + linux32 + chroot만큼 쉽습니다.

+0

무엇이든 가능합니다. postinst에서 선택되고 심볼릭 링크가있는 별도의 디렉토리에 아키텍처 의존적 인 것들을 가진 솔루션을 보았습니다. 패키지를 공유 패키지로 분할하고 아키텍처 종속적 인 pkg를 분리 할 수도 있습니다. 이러한 모든 옵션은 '비표준 사례'이며 재 작업 및 복잡한 절차로 이어집니다. 지금까지 2 개의 패키지를 만드는 것이 가장 좋은 방법이었습니다. –

관련 문제