모호한 GCC 링커 오류 메시지에 대해 많은 인터넷 검색과 게시 및 울음 끝에 나는 외부 CPU 아키텍처에서 무언가를 안정적으로 구축하는 유일한 방법은 chroot 환경을 설정하는 것이라는 결론에 도달했습니다. 저는 이미 VirtualBox에서 데비안을 실행하고 있기 때문에 이것은 다소 흥미롭습니다. 이제 가상 시스템 내의 가상 시스템이 될 것입니다.
chroot에 대한 다양한 튜토리얼을 읽었을 때 마음에 들지 않는 두 가지 사항을 발견했습니다.
여기에는 항상 아래와 같이 선택한 일부 URL에서 시스템을 다운로드하는 명령이 포함되어 있습니다. 나는 이미 갖고 있는 유사한 시스템을 사용하여 가능한 한 작게 만들고 싶었습니다.
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ http://mirror.url.com/ubuntu/
- 호스트 시스템에 있는 프로젝트를 컴파일하는 것은 실제로 언급되지 않습니다. 내 프로젝트를 어딘가에 복사하고 싶지 않은 것처럼, 그렇다면 다른 가상 박스 시스템을 설정할 수 있습니다.
그래서 실제로 chroot 시스템을 만든 사람이 있는지 물어보고 싶었습니다.이를 사용하여 프로젝트를 빌드합니다.. 물론 도서관용으로만 설치하는 것이므로 시스템이 가능한 한 작으면 이상적입니다. 이를 실행하는 64비트 시스템용 32비트 버전만 다운로드하면 좋을 것입니다.
Linux 프로그래머들은 항상 Linux에서의 프로그래밍이 Windows에서의 프로그래밍이 훨씬 쉽다고 말했습니다. 나는 마침내 이들 중 일부를 경험하고 싶습니다.
답변1
나는 이미 하나를 썼다32비트 chroot 생성을 위한 튜토리얼, 따라서 여기서는 반복하지 않고 여러분이 이미 읽었다고 가정하겠습니다. 이 답변에서는 귀하의 질문에 있는 특정 사항만을 다루겠습니다.
여기에는 항상 아래와 같이 선택한 일부 URL에서 시스템을 다운로드하는 명령이 포함되어 있습니다. 나는 이미 갖고 있는 유사한 시스템을 사용하여 가능한 한 작게 만들고 싶었습니다.
패키지를 다운로드해야 합니다. 동일한 파일을 제공하는 64비트 패키지가 있기 때문에 대부분의 32비트 패키지는 시스템에 설치되지 않거나 설치할 수 없습니다.
설치하려는 32비트 배포 버전을 선택해야 합니다. 결국 동일한 기술을 사용하여 다른 버전의 배포판을 설치할 수 있습니다.
당신은 두 가지 호환되지 않는 목표를 제시합니다. 하나는 최소한의 시스템을 갖는 것이고, 다른 하나는 이미 가지고 있는 64비트 시스템을 재현하는 것입니다. 최소한의 시스템을 원한다면 debootstrap 설치부터 시작하세요. 물론, chroot에서 절대 사용되지 않을 일부 패키지를 삭제하여 몇 메가바이트를 절약할 수는 있지만 종속성을 조작하는 데 시간을 들일 가치는 없습니다(아마도 많은 패키지를 깨뜨려야 할 것입니다). 꼭 필요한 것은 아닙니다.) 기존 설치를 재현하려면 다음을 사용하십시오.apt-clone
가능한 경우 (예), 그렇지 않은 경우사용 dpkg --get-selections
및apt-mark
.
호스트 시스템에 있는 프로젝트를 컴파일하는 것은 실제로 언급되지 않습니다. 내 프로젝트를 어딘가에 복사하고 싶지 않은 것처럼, 그렇다면 다른 가상 박스 시스템을 설정할 수 있습니다.
schroot가 설정한 chroot에는 이미 홈 디렉터리가 있습니다. 더 정확하게 말하면 /home
바인드 마운트는 chroot 내부에 있습니다. 따라서 프로젝트가 아래 어딘가에 있으면 /home
chroot에서 이미 사용할 수 있습니다.
다른 디렉토리를 사용 가능하게 하려면 에 항목을 추가하고 /etc/schroot/default/fstab
기존 항목을 복사하십시오 /home
.
/dev /dev none rw,bind 0 0
/dev/pts /dev/pts none rw,bind 0 0
/home /home none rw,bind 0 0
/tmp /tmp none rw,bind 0 0
/scratch /scrath none rw,bind 0 0
그래서 실제로 chroot 시스템을 만들고 이를 사용하여 프로젝트를 빌드한 사람이 있는지 묻고 싶었습니다.
나는 항상 이것을 한다. 사실 제가 처음에 이 글을 쓴 이유도 바로 그것 때문입니다.
답변2
먼저 가상 머신에 하나를 구축한 다음 이를 하위 디렉터리에 복사하여 chroot 디렉터리 역할을 하세요.
예, 저는 이 작업을 수행했으며 이를 사용하여 32비트 클린 빌드를 수행했습니다.