우분투에서 컴파일시켜서 .exe 로 파일을 만들어내면
여기서도 윈도우 프로그램 돌릴 수 있는 거잖아요. 왜 그렇게 못만들어내죠? 궁금해서요 ㅠㅠ
감사합니다.
시스템공부하고 싶어하는 학생이...
포맷은 인식하면야 되지만, 관련 라이브러리와 시스템 콜이 다르므로 처리하기 어렵습니다
이 답변을 이해하실 정도면 저런 질문은 올리지도 않았겠죠.
아무튼, CPU 가 틀릴 경우 CPU emulation 을 통해, OS 가 틀릴 경우 OS emulation 을 통해 이 기종 바이너리를 실행하는 것이 가능합니다. (네... 단지 "가능하다" 일 뿐입니다)
linux 에서는 커널이 제공하는 binfmt_misc 를 이용해 추가적인 로더를 등록할 수 있습니다. qemu 를 사용해서 이 기종 CPU emulation, wine 을 사용해서 windows OS emulation 이 가능합니다.
emulater 혹은 interpreter 는 CPU instruction 같은 h/w 적인 에뮬레이션을 담당하거나, system call 같은 API/ABI 의 에뮬레이션을 담당합니다.
[bushi@rose kernel-2.6]$ [bushi@rose kernel-2.6]$ uname -a Linux rose 2.6.23.15-80.fc7 #1 SMP Sun Feb 10 17:29:10 EST 2008 i686 i686 i386 GNU/Linux [bushi@rose kernel-2.6]$ [bushi@rose kernel-2.6]$ ls -l /proc/sys/fs/binfmt_misc/ 합계 0 -rw-r--r-- 1 root root 0 2008-03-31 18:59 qemu-arm --w------- 1 root root 0 2008-03-31 18:59 register -rw-r--r-- 1 root root 0 2008-03-30 18:56 status -rw-r--r-- 1 root root 0 2008-03-30 18:57 windows -rw-r--r-- 1 root root 0 2008-03-30 18:57 windowsPE [bushi@rose kernel-2.6]$ [bushi@rose kernel-2.6]$ cat /proc/sys/fs/binfmt_misc/qemu-arm enabled interpreter /usr/bin/qemu-arm flags: offset 0 magic 7f454c4601010100000000000000000002000600 mask fffffffffffefefffffffffffffffffffbffffff [bushi@rose kernel-2.6]$ [bushi@rose kernel-2.6]$ cat /proc/sys/fs/binfmt_misc/windowsPE enabled interpreter /usr/bin/wine flags: offset 0 magic 5045 [bushi@rose kernel-2.6]$
위와 같은 환경에선 x86 windows 용 hello.exe 나 arm linux용의 hello.elf 모두 x86 linux에서 실행할 수 있습니다.
OTL
하긴 실행파일 로더 차원에서 재배치해주는 솔루션도 있다고 들은 것 같기도 한데 잘 몰겠군여...
못만들다뇨? cross compile로 exe 형태의 실행파일을 만들 수도 있고 wine을 이용해 실행할 수도 있습니다.
질문의 요지를 파악 못한 건가요?
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
포맷은 인식하면야
포맷은 인식하면야 되지만, 관련 라이브러리와 시스템 콜이 다르므로 처리하기 어렵습니다
이 답변을 이해하실
이 답변을 이해하실 정도면 저런 질문은 올리지도 않았겠죠.
아무튼,
CPU 가 틀릴 경우 CPU emulation 을 통해,
OS 가 틀릴 경우 OS emulation 을 통해 이 기종 바이너리를 실행하는 것이 가능합니다.
(네... 단지 "가능하다" 일 뿐입니다)
linux 에서는 커널이 제공하는 binfmt_misc 를 이용해 추가적인 로더를 등록할 수 있습니다.
qemu 를 사용해서 이 기종 CPU emulation,
wine 을 사용해서 windows OS emulation 이 가능합니다.
emulater 혹은 interpreter 는
CPU instruction 같은 h/w 적인 에뮬레이션을 담당하거나,
system call 같은 API/ABI 의 에뮬레이션을 담당합니다.
위와 같은 환경에선 x86 windows 용 hello.exe 나 arm linux용의 hello.elf 모두 x86 linux에서 실행할 수 있습니다.
OTL
음...
하긴 실행파일 로더 차원에서 재배치해주는 솔루션도 있다고 들은 것 같기도 한데 잘 몰겠군여...
못만들다뇨? cross
못만들다뇨?
cross compile로 exe 형태의 실행파일을 만들 수도 있고
wine을 이용해 실행할 수도 있습니다.
질문의 요지를 파악 못한 건가요?
댓글 달기