Scratchbox 를 사용 하여 내장 형 Linux 를 개발 합 니 다.

10207 단어 linux
다음으로 전송: http://blog.chinaunix.net/u3/108239/showart_2146014.html
scratchbox 소개
Scratchbox is a configuration and compilation environment for building Linux software and entire Linux distributions. The basic idea of Scratchbox is to offer developers an environment that works and looks like the target environment before the target environment is available.
설치, scratchbox 설정
원본 코드 를 사용 하여 scratchbox 를 설치 합 니 다. Ubuntu / Debian 을 사용 하 는 사용 자 는 직접 apt 를 사용 하여 설치 할 수 있 습 니 다. 구체 적 으로 Cross-Compiling tutorial with ScratchboxInstalling Scratchbox ScratchBox 구성 요 소 를 참고 하 십시오. 필수: scratchbox - core: scratchbox 환경, 상용 도구 및 로 컬 컴 파일 러. scratchbox-libs   : scratchbox - core, devkits, toolchains 에 필요 한 라 이브 러 리 입 니 다. 선택 가능: scratchbox - devkit - debian     : 데 비 안 패키지 개발 에 사용 할 환경 과 도구 입 니 다. scratchbox - devkit - doctools  : 문서 생 성 도구 scratchbox - devkit - perl          : 추가 perl 모듈. 도구 체인 (선택 가능) scratchbox - toolchain - arm - gcc 3.3 - glibc 2.3 scratchbox - toolchain - i686 - gcc 3.3 - glibc 2.3 scratchbox - toolchain - arm - gcc 3.2 - uclibc 20040229 scratchbox - toolchain - i386 - gcc 3.2 - uclibc 20040229 부터  Scratchbox download page  아래 구성 요소 들 을 다운로드 하 십시오. scratchbox-core-1.0.5-i386.tar.gz scratchbox-libs-1.0.5-i386.tar.gz scratchbox-toolchain-arm-gcc3.4-glibc2.3-1.0.2-i386.tar.gz 이 가방 들 을 압축 해제 $tar xvzf < packagename> -C ~/project/sb
ScratchBox 는 기본적으로 / scratchbox 디 렉 터 리 에 설치 합 니 다. 그러나 루트 디 렉 터 리 공간 이 부족 하면 이렇게 할 수 있 습 니 다. (내 ~ / procject / sb 디 렉 터 리 에 설치 합 니 다) $ sudo ln -s ~/project/sb/scratchbox /scratchbox
앞 에 있 는 가방 의 압축 을 풀 면 scratchbox 디 렉 터 리 에 있 습 니 다. scratchbox 디 렉 터 리 를 만 들 필요 가 없습니다. 모든 압축 해제 작업 이 끝 난 후에 기호 연결 을 만 들 수 있 습 니 다. scratchbox 1 을 설정 하고 $를 실행 할 수 있 습 니 다. sudo /scratchbox/run_me_first. sh 가 질문 을 해 드릴 게 요. Do you want to use sudo mode? [yes / no] (no): no 를 yes 로 선택 하면 권한 문제 가 있 습 니 다. Give the name of the scratchbox group (sbox): sboxsbox 는 기본 그룹 입 니 다. 2. 이 두 가 지 를 선택 한 후 scratch 를 다시 시작 하고 사용 자 를 추가 하 는 것 을 알려 줍 니 다. Now you should add one or more users with / home / zp / procject / sb / scratchbox / sbin / sboxadduser$ sudo /scratchbox/sbin/sbox_adduser zp 주의, 추 가 된 사용 자 는 로 컬 호스트 에 있 는 사용자 만 있 을 수 있 습 니 다 (여 기 는 zp)!
3,    $ groups   ,       sbox   ,         scratchbox .   
, , .

위의 절 차 를 마 친 후 $df - h 를 실행 합 니 다. scratchbox 에 관 한 파일 시스템 이 많 지 않 습 니까?scratchbox 마 운 트 해제
scratchbox 가 이 시스템 의 일부 디 렉 터 리 를 마 운 트 하기 때문에 (mount 명령 을 실행 하여 마 운 트 정 보 를 보십시오) 디 렉 터 리 삭 제 를 통 해 scratchbox 를 마 운 트 해제 할 수 없습니다. 아래 방법 을 눌 러 야 합 니 다: 1, scratchbox 를 중지 하 십시오: $ sudo /scratchbox/sbin/sbox_ctl stop
2,   mount            scratchbox      :
$
rm -r /scratchbox

모든 디 렉 터 리 를 삭제 하기 전에 scratchbox 의 usrs 디 렉 터 리 에 있 는 유용 한 자 료 를 다른 곳 으로 복사 하여 백업 하 는 것 이 좋 습 니 다.
 
  

使用scratchbox


使用scratchbox有两类方法: 
(1)不登录到scratchbox中, 直接使用它提供的交叉编译工具. 这是我们常见的交叉编译开发手段.
(2)登录到scratchbox, 如果登录到任何一台linux主机, 在scratchbox中进行开发. scratchbox就是一个完备的开发环境.
        scratchbox     

outside scratchbox
scratchbox , /scratchbox/compilers/ :
arm-linux-gcc3.4.cs-glibc2.3
gcc-3.4 + glibc2.3 .
bin .

scratchbox hello,world:
$ /scratchbox/compilers/arm-linux-gcc3.4.cs-glibc2.3/bin/arm-linux-gcc \
> -Wall -o hello hello.c

$ file hello
, hello .

, hello .

Cross-Compiling tutorial with Scratchbox 2.2 .


전체 명령 을 입력 하 는 것 이 번 거 로 우 면 환경 변수 PATH 를 변경 하고 해당 디 렉 터 리 를 PATH 의 시작 부분 에 놓 을 수 있 습 니 다. 

inside scratchbox
Scratchbox chrooted . , .
( , scratchbox )

1, scratchbox
$ /scratchbox/login scratchbox, : [sbox-: ~] >

sb 에 처음 로그 인 하려 면 target 을 설정 해 야 합 니 다. 다음 절 을 먼저 보 세 요!
이 프롬프트 뒤에 자주 사용 하 는 셸 명령 을 입력 할 수 있 습 니 다. eg. ls / 를 실행 하면 우 리 는 익숙 한 디 렉 터 리 를 볼 수 있 습 니 다. 이것 이 바로 당신 의 원래 Linux 시스템 의 디 렉 터 리 라 고 생각 하지 마 세 요. 실제로 이 디 렉 터 리 중 일 부 는 근본적으로 비어 있 습 니 다. scratchbox 는 완 비 된 환경 입 니 다. 원래 의 Liux 와 큰 관계 가 없습니다!
scratchbox 는 로 컬 호스트 의 일부 디 렉 터 리 를 scratchbox 에 마 운 트 합 니 다. $실행 mount 는 어떤 디 렉 터 리 가 마 운 트 되 었 는 지 볼 수 있 습 니 다. 그러나 scratchbox 에 서 는 로 컬 호스트 의 홈 디 렉 터 리 를 볼 수 없습니다. 어떻게 해결 합 니까?로 컬 호스트 의 디 렉 터 리 를 공유 하기 위해 scratchbox 에 기호 연결 을 만 들 수 있 습 니 다. 예 를 들 어 ~ / procject / sb 에서 $ ln -s /scratchbox/users/zp/home/zp/app/ app-sb 이렇게 ~ / procject / sbscratchbox - / app - sb / 디 렉 터 리 에 추 가 된 내용 은 scratchbox 사용자 zp 의 홈 디 렉 터 리 에 있 는 app 디 렉 터 리 에서 볼 수 있 습 니 다.
scratchbox 에서 개발 하기 전에 우 리 는 준비 작업 을 해 야 합 니 다: target 설정. 2, 대상 설정
글 의 첫 번 째 scratchbox 구성 요소 목록 에서 보 듯 이 debian 의 개발 환경 과 선택 할 수 있 는 glibc, uClibc 의 개발 체인 을 제공 합 니 다. 이전에 우 리 는 3 개의 소스 패키지 만 사 용 했 습 니 다.  현재 유용 하 다 고 생각 하 는 패 키 지 를 다운로드 하여 같은 디 렉 터 리 로 압축 을 풀 수 있 습 니 다. 이렇게 target 을 설정 하 는 과정 에서 이 패 키 지 를 기반 으로 서로 다른 target: scratchbox 는 서로 다른 목표 target 을 설정 하여 개발 할 수 있 습 니 다.
scratchbox 에 서 는 sb - menu 그래 픽 설정 도 구 를 통 해 target 을 설정 할 수 있 고 명령 행 sb - conf, sbrsh - conf 를 사용 하여 설정 할 수 있 습 니 다. sb - menu 를 사용 하 는 것 이 편리 합 니 다. (sb - menu 명령 은 다른 target 을 선택 하 는 데 도 사용 할 수 있 습 니 다)
저 는 지금 수중 에 있 는 ARM 9 개발 판 을 대상 으로 target. arm9glibc 를 설정 합 니 다. glibc 라 이브 러 리 를 사용 합 니 다.arm9uClibc: uClibc 라 이브 러 리 를 사용 합 니 다.
실행 > sb - menu 설정 메뉴 에 들 어 갑 니 다. target 구축 에 대한 자세 한 설정 절 차 는 Installing Scratchbox 의 2.4 절 을 참고 하 십시오. 여기 서 주의해 야 할 것 은: Selected devkits 에서 cputransp 설정 시 뮬 레이 터 를 선택 하 십시오. qemu - arm 으로 선택 하 십시오.
  QEMU ARM 명령 집합 시 뮬 레이 터 입 니 다. scratchbox 에 qemu 와 sbrsh 두 가지 시 뮬 레이 션 수단 을 제공 합 니 다. qemu 시 뮬 레이 션 을 사용 하려 면 devkit - cputransp 패 키 지 를 설치 해 야 합 니 다!
간단 한 예 를 들 어 scratchbox 에서 교차 컴 파일 하 는 방법 을 보 여 줍 니 다. (1) terminal 을 열 고 ~ / procject / sb / app - sb 디 렉 터 리 에 들 어 갑 니 다. 이것 이 바로 제 가 앞에서 만 든 기호 연결 입 니 다. zp 사용자 가 scratchbox 에 있 는 / home / zp / app 디 렉 터 리 를 가리 키 고 있 습 니 다. 저 는 안에 hello, World 프로그램 을 쓰 고 있 습 니 다. (2) 다른 terminal 을 열 고 scratchbox 에 로그 인 합 니 다. / home / zp / app 디 렉 터 리 에서 hello, World 의 소스 코드 를 볼 수 있 습 니 다. 현재 컴 파일: $ gcc - wal - o hello hello. c 여기 gcc 는 scratchbox 에서 target 이 선택 해 야 할 tool - chain 을 호출 합 니 다. target 을 설정 할 때 선택 한 것 을 기억 하 십 니까? $ file hellohello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped$ ./hellohello, world!위 에 표 시 된 결 과 는 실제로 qemu 시 뮬 레이 터 에 표 시 된 결과 입 니 다. 어 떻 습 니까?scratchbox 에서 교차 개발 을 하 는 것 은 로 컬 호스트 에서 개발 하 는 것 처럼 편리 하지 않 습 니까?sbrsh 로 개발
sbrsh 를 사용 하면 이전 절 에 있 는 "inside scratchbox" 의 내용 을 계산 해 야 합 니 다. 여기 서 꺼 내 서 따로 소개 합 니 다.
Sbrsh is an alternative to QEMU for implementing the CPU-transparency feature of Scratchbox. It runs the configure scripts' test programs on a remote device with the CPU architecture used by the cross-compilation toolchain-typically the device that you are developing software for. Some build systems also benefit from it when they attempt to execute a target binary which is used to generate data files. Running programs on an actual target device is more reliable than emulating a specific device because emulators might not support all required features or there might not be an appropriate emulator available at all.
NFS 설정
sbrsh 를 사용 하려 면 사용자 의 홈 디 렉 터 리 와 target 디 렉 터 리 를 대상 시스템 에 볼 수 있 고 NFS 마 운 트 를 통 해 이 루어 져 야 합 니 다.
내 가 사용 하 는 Ubuntu 는 이전에 NFS 서비스 가 설치 되 어 있 었 습 니 다. NFS 설정 에 대해 서 는 본 블 로그 이 문장 를 참고 하여 home, target 디 렉 터 리 를 대상 시스템 에 마 운 트 하려 면 / etc / exports 설정 파일 을 수정 해 야 합 니 다. home 과 target 에 대응 하 는 디 렉 터 리 를 추가 하 십시오. / scratchbox / users / < USER > / targets / < TARGET > < IP > (rw, allsquash,anonuid=,anongid=)/scratchbox/users//home(rw,all_squash, anonuid = < UID >, anongid = < GID >) 저 는 이런 설정 을 사용 합 니 다: / scratchbox / users / zp / target / hh - glibc 192.168.2.120 (rw, async, allsquash,anonuid=1000,anongid=1000)/scratchbox/users/zp/home 192.168.2.120(rw,async,all_squash,anonuid=1000,anongid=1000)all_squash: 모든 UID 와 GID 를 각자 의 익명 버 전에 투사 합 니 다. anouid     :  원 격 UID 에 비 친 uidanongid 지정     :   원 격 uid 계 정 이 매 핑 된 gid 실행 $를 지정 합 니 다. id zp, uid = 1000, gid = 1000 을 알 수 있 습 니 다. 대상 시스템 mount 후 사용자 zp 권한 으로 로그 인 합 니 다. / etc / exports 를 변경 하여 $를 실행 합 니 다. sudo exportfs -r 업데이트 실행 $ sudo /etc/init.d/nfs-kernel-server restart nfs 서 비 스 를 다시 시작 하려 면 sbrsh 를 설치 한 다음 호스트 에 sbrsh dameon 을 설치 하고 대상 시스템 에서 실행 해 야 합 니 다.

좋은 웹페이지 즐겨찾기