2013-04-17 3 views
0

amd64 데비안 호스트에서 i386 Linux 커널 deb 패키지를 빌드하려고합니다.amd64 호스트에서 i386 리눅스 커널을 빌드하십시오.

이제는 --cross-compile flag으로 설정하고 있습니다. 커널 자체에 대한 greate 작업을 수행합니다. 그러나 문제는 여전히 로컬 시스템 formart로 컴파일 된 커널 도구입니다. HOSTCC 변수 만 변경하면 링커가 잘못 일치하여이 문제를 해결할 수 없습니다.

내가 알고있는 chroot 또는 linux32 환경이 작동합니다. 그러나 그것들은 유일한 방법입니까? 누군가가 팔 커널을 만들길 원할 수 있기 때문에 다른 해결책이 있어야합니다.

PS : 여기 내가 사용하고있는 명령은 다음과 같습니다 나는 이런 식으로했을

CONCURRENCY_LEVEL=8 DEB_HOST_ARCH=i386 MAKEFLAGS="HOSTCC=/home/csl/bin/i486-linux-gnu-gcc"\ 
make-kpkg --rootcmd fakeroot --initrd --arch i386 --cross-compile /home/csl/bin/i486-linux-gnu- --append-to-version=-liquorix-csl binary-arch \ 
> >(tee stdout.log) 2> >(tee stderr.log >&2) 

답변

2

:

  1. 는 sudo dpkg를 --add-아키텍처 i386을
  2. sudo를 업데이 트를 apt-get을 & & sudo apt-get install i386_defconfig
  3. ARCH = i386 -j5 deb-pkg

정말 필요한 곳에 ia32-libs가 있는지 탐색 할 시간이 없습니다. 하지만 데비안 책에서 설명한 것처럼 make-kpkg가 더 이상 사용되지 않는다는 점을 지적하고자합니다.

+0

'make-kpkg'는'setarch'에서 잘 작동하는 것 같습니다. – user2288954

+0

예,하지만 make-kpkg는 더 이상 사용되지 않습니다. [Debian Linux Kernel Handbook] (http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-building)을 참조하십시오. – txomon

0

나는이 같은 지금 뭐하는 거지 :

CONCURRENCY_LEVEL=6 DEB_HOST_ARCH=i386 setarch i386 make-kpkg --initrd --arch i386 binary-arch 

나는 보지 않았다 어떤 데비안 책에 대해-kpkg 불평, 그래서 당신은 데비안 책에 대한 참조를 보일 수 있는가?

실제 문제는 scripts에 포함 된 커널 도구가 기본 형식으로 컴파일해야하며 커널 빌드를 보조해야한다는 것을 알게되었습니다. 그러나이 도구는 DKMS를 수행 할 때 다시 사용할 수 없습니다. 이는 DKMS가 크로스 컴파일과 충돌하기 때문입니다. 나는 깨진 크로스 빌드 커널을 수동으로 해킹 할 것이다.

관련 문제