MSYS나 CYGWIN을 사용하지 않고 coLinux기반에서 QEMU를 컴파일 하는 방법.
[MinGW32 설치]
gcc등 기본적인 개발툴 설치.(build-essential로 기본적인 개발툴들 모두 설치)
$ sudo apt-get install build-essential |
크로스툴을 설치한다.
$ sudo apt-get install mingw32 |
[파일 다운로드]
다음 파일들을 '~/qemu'에 다운로드 받는다.
git로 문제가 없는 qemu-0.14.0-rc2를 다운받는다.
오늘날자(2011.02.15)로 보니 stable이 qemu-0.14.0-rc2(0.13.92)다.
정확한 버전은 다운로드후 VERSION파일을 보면 알수있다.
참고로 qemu-0.14.0-rc1은 버전이 0.13.91임.
$ mkdir ~/qemu
$ cd ~/qemu
$ wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
$ wget http://zlib.net/zlib-1.2.5.tar.gz
$ git clone git://git.qemu.org/qemu-stable-0.14.git
|
[압축 해제]
$ tar -zxf SDL-1.2.14.tar.gz
$ tar -zxf zlib-1.2.5.tar.gz
|
[SDL]
$ cd ~/qemu/SDL-1.2.14
$ ./configure --host=i586-mingw32msvc
$ sudo make
$ sudo make install |
[ZLIB]
디렉토리 생성
$ cd ~/qemu/zlib-1.2.5
$ mkdir ./bin
$ mkdir ./bin/bin
$ mkdir ./bin/include
$ mkdir ./bin/lib
|
환경변수 설정
$ AR=/usr/bin/i586-mingw32msvc-ar
$ CC=/usr/bin/i586-mingw32msvc-gcc
$ CPP=/usr/bin/i586-mingw32msvc-cpp
$ CPPFLAGS="-I/usr/i586-mingw32msvc/include -I./bin/include"
$ CXX=/usr/bin/i586-mingw32msvc-g++
$ LDFLAGS="-L/usr/i586-mingw32msvc/lib -L./bin/lib -L/usr/lib" <- '/usr/lib'는 libc.so를 참조하기 위한 경로.
$ PATH=/usr/i586-mingw32msvc/bin:$PATH
$ RANLIB=/usr/bin/i586-mingw32msvc-ranlib
$ RC=/usr/bin/i586-mingw32msvc-windres
$ WINDRES=/usr/bin/i586-mingw32msvc-windres
$ export AR CC CPP CPPFLAGS CXX LDFLAGS PATH RANLIB RC WINDRES
|
빌드
$ ./configure --prefix=./bin $ sudo make $ sudo make install |
dll 생성
$ /usr/bin/i586-mingw32msvc-gcc -shared -o ./bin/bin/zlib1.dll -Wl,--out-
|
[QEMU]
qemu-0.14.0-rc1은 컴파일시 수정을 해야 하는 부분들이 있다. qemu-0.14.0-rc2를 사용 하는게 좋다.
qemu-0.14.0-rc1을 사용 한다면 아래 참조, qemu-0.14.0-rc2를 사용 한다면 바로 빌드를 한다.
qemu-0.14.0-rc1 수정 포인트 - qemu-0.14.0-rc2버전 사용자라면 해당사항 없음. |
빌드
$ mkdir ~/qemu/qemu-stable-0.14/qemu-bin
$ sudo ./configure --prefix=/home/mongin/qemu/qemu-stable-0.14/qemu-bin --disable-linux-user --enable-system --disable-darwin-user --target-list=i386-softmmu,arm-softmmu --cpu=i386 --cross-prefix=i586-mingw32msvc- --extra-cflags=-I/home/mongin/qemu/zlib-1.2.5/bin/include --extra-ldflags=-L/home/mongin/qemu/zlib-1.2.5/bin/lib
$ sudo make
$ sudo strip ./i386-softmmu/qemu.exe
$ sudo strip ./arm-softmmu/qemu-system-arm.exe
$ sudo strip ./qemu-img.exe
$ sudo strip ./qemu-io.exe
$ sudo make install
|
- ./configure에서 에러 발생시 자세한 내용을 ./config.log에서 살펴볼수 있다.
- --target-list에서 x86_64-softmmu의 경우 컴파일시 " CC x86_64-softmmu/translate.o"에서 빌드 하는데 시간이오래 걸린다.
- --prefix옵션에 경로 설정시 전체경로를 적어야 한다. "~/qemu/qemu-stable-0.14/qemu-bin"나 "./qemu-bin"과 같은 경로를 사용하면 안된다.
- --target-list에서 사용 가능한 것들 :
- portable: i386-softmmu, x86_64-softmmu, arm-softmmu, cris-softmmu, m68k-softmmu, microblaze-softmmu, mips-softmmu, mipsel-softmmu, mips64-softmmu, mips64el-softmmu, ppc-softmmu, ppcemb-softmmu, ppc64-softmmu, sh4-softmmu, sh4eb-softmmu, sparc-softmmu, sparc64-softmmu
- Linux specific: i386-linux-user, x86_64-linux-user, alpha-linux-user, arm-linux-user,armeb-linux-user,cris-linux-user,m68k-linux-user,microblaze-linux-user,mips-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64abi32-linux-user,sh4-linux-user,sh4eb-linux-user,sparc-linux-user,sparc64-linux-user,sparc32plus-linux-user
- Darwin specific: i386-bsd-user, x86_64-bsd-user, sparc-bsd-user, sparc64-bsd-user
qemu-bin에 빌드된 내용이 있을것이다.
마지막으로 빌드해 놓았던 SDL.dll을 이곳으로 복사한다.
$ sudo cp /usr/local/cross-tools/i386-mingw32/bin/SDL.dll ./qemu-bin/SDL.dll |
[참고]
MinGW 크로스컴파일러
SDL
zlib
zlib 크로스 컴파일
'작업일지 > QEMU' 카테고리의 다른 글
Windows에서 qemu의 qow같은 파일 만드는 방법 (0) | 2011.01.31 |
---|---|
zlib 컴파일 (0) | 2011.01.26 |
ARM Emulation With QEMU (0) | 2010.11.19 |
qemu, colinux network 작업 (0) | 2010.03.11 |
QEMU로 ARM에뮬레이팅 하기 (0) | 2010.03.01 |