일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 어린이
- 스마트폰 리눅스
- 아마추어무선
- 비욘드트러스트
- 여행
- 한강 라이딩코스
- 태블릿 리눅스
- 갤럭시 핏2
- 대만
- 가족여행
- Termux
- 체험학습
- 도쿄
- cross compile
- 박물관
- 크로스 컴파일
- 제주도
- 일본
- 한강
- 휴양림
- ARM
- iGPSPORT
- 둠
- 캠핑
- BSC100S
- FT-8
- 딸래미
- ubuntu 24.04
- 갤럭시 핏3
- 페루
- Today
- Total
주희아빠의 헝그리 라이딩
ARM 환경에서 둠 실행하기. I 편 - 개요/ x86 시도. 본문
2023.11.11
1. 개요
사건의 시작은 우연히 제 수중에 들어온 철지난 '라즈베리파이 3B' 때문이었습니다.
이것저것 해보면서 'arm 이 이렇게 다르구나...' 를 깨닫고 뭔가 재미 있는게 없을까 하다가... 아래의 블로그 글을 발견하였습니다.
https://m.blog.naver.com/anslasax/221637963425
외국에서는 화면만 있다면 온갖 장비에서 다 둠을 돌려 본다던데 아쉽게도 우리나라에서는 시도 자체나 성공/ 실패했다는 글을 거의 본적이 없습니다. 그나마 위 블로그에서나마 일부 과정과 돌아가는 모습에 대해 보여주고 있습니다.
'Doom' 자체가 유명하기도 하지만 개인적으로는 그 옛날 DOS 에서 하던 게임인 'Wolfenstein' 의 개선판인 'Wolfenstein 3D' 의 뒤를 잇는 게임이었기 때문에 좀 더 정이 가는 듯 합니다.
'울펜슈타인' 게임은 나치의 비밀문서를 탈취하고(1), 히틀러를 암살하는(2) 게임인데 독일 발음 그대로 '불펜슈타인' 이라고 읽기도 했습니다. 잠시 게임 스샷을 보면 '이게 어디를 봐서 같은 게임이냐?' 고 반문하겠지만.
하지만 독일군도 나오고 무기도 있고 상자도 나오고.. 문도 열리고... 3D 가 되면서 완전히 갈아 엎은 케이스.
이제 좀 Doom 과 비슷해 보이나요? 울펜슈타인 3D. 이것이 둠의 조상! 존경스러운 '존 카맥 -John D. Carmack II'
다시 돌아와서. 저도 이 '다른 기종 둠 동작 시키기' 에 도전해 보기로 합니다.
둠의 정보는 다음 사이트에서 다루고 있으며 이중 가장 유명한 포트(다른 곳에서 돌아가도록 제작한 소스 종류)는 'Chocolate Domm' 과 'PrBoom' 이 있습니다. 각 링크는 아래 주소 참고.
https://doomwiki.org/wiki/Entryway
https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom
https://prboom.sourceforge.net/
Doom 은 종류가 많은데 그중 위 블로그에서 소개된 prboom 을 선택하였습니다. 일단은 그냥 따라하면 될 것으로 보고 시작하였습니다.
처음에는 블로그에 언급된 SDL 이나 buildroot 에 대해 이해하지 못하였으나 조금씩 진행하면서 정리가 되었습니다.
최종 목표는 위 블로그처럼 화면이 달린 임베디드나 제3의 장치가 목표지만 지금으로서는 주변에 마땅한 기기가 없어 ARM 을 채택한 비주류적인 장치를 물색중에 있습니다.
아직 최종 단계까지 성공한 것은 아니지만 그 과정을 준비해 가면서 몇가지 단계로 구분을 하였습니다.
우선 첫번째는 x86 리눅스상에서 가장 기본적인 컴파일을 시도해 보는 것입니다.
이렇게 하면 컴파일 순서와 동작에 필요한 라이브러리들에 대한 감을 익힐 수 있습니다. 사실 이 단계 없이 바로 크로스 컴파일을 시작했었는데 과정중 발행하는 에러에 대해 판단 하기가 힘들었습니다. 그래서 일단 정상적으로 잘되는 경우를 정리해야 상황 판단과 에러 추적에 도움이 됩니다.
두번째로는 arm 으로 Cross Compile 을 시도해 볼 것입니다.
arm 머신인 '라즈베리파이 3B' 에서 시도해 봤는데 32bit 로는 컴파일이 제한적인 경우가 있었고, 64bit 여도 1GB 메모리에서는 'Out of memory' 를 내고 죽는 경우도 발생했습니다. 그리고 컴파일 속도도 너무 느려서 하루종일 걸리는 경우도 있었습니다.
이런 경우 x86 의 빠른 PC 에서 target host 의 아키텍처(arm)로 컴파일을 할 수 있습니다.
크로스 컴파일의 경우 필요한 재료들을 추가로 가지고 있어야 하는데 이들을 모두 직접 크로스 컴파일을 해서 준비할 수도 있고, Buildroot 라는 것을 통해 대체 시스템을 구축할 수도 있습니다.
마지막으로는 위 블로그의 그림처럼 프린터이든 집 벽에 달린 월패드이든.. ESP32 같은 임베디드 보드라든가 그외 뭔가 괴랄한 장비에서 둠을 돌리는 것이 최종 목표입니다.
일단 시작으로 x86 에서 기본을 수행해 봅니다.
2. x86 에서 컴파일 수행하기.
환경: x86 이고 Ubuntu 22.04 LTS 에서 진행하였습니다. 사실은 Windows 10 에 있는 WSL2 환경입니다.
Case 1: target host - x86, SDL 라이브러리 apt 로 설치.
-- 개발이 완전 처음이라면 컴파일 환경 구성.
$ sudo apt install build-essential
-- 다운 받고 압축을 풀어줍니다.
$ wget -O prboom-2.5.0.tar.gz https://sourceforge.net/projects/prboom/files/prboom%20stable/2.5.0/prboom-2.5.0.tar.gz/download
$ tar xvf prboom-2.5.0.tar.gz
$ cd prboom-2.5.0
-- 설치경로를 정해주고, opengl 과 network 옵션은 사용하지 않음으로 합니다. 우리는 최소의 동작확인만 하면 되니까요.
$ ./configure --prefix=$HOME/doom_prboom_x86 --disable-gl --without-net
... 쭈욱 컨피그 환경을 구성하다가 다음처럼 에러가 발생합니다.
checking for SDL - version >= 1.1.3... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: *** You must have the SDL libraries installed before you can compile prboom
*** See http://prboom.sourceforge.net/linux.html
-> 컴파일시 사용될 SDL 라이브러리가 없다는 메세지입니다. 우선은 쉬운길을 갈 계획이므로 관련 라이브러리를 설치해 줍니다.
$ sudo apt install libsdl1.2-dev
-- 이후 다시 ./configure 를 진행하면 무사히 진행됩니다.
--이후 컴파일 명령을 내려봅니다.
$ make
.. 뭔가 막 컴파일되며 지나가다가 다음과 같은 에러를 만납니다.
다행히 위 블로그에 해결 방법이 나와 있습니다.
i_sshot.c:234
png_error_ptr_NULL
-> 다음 소스를 열어서 위쪽 적당한 곳에 아래 내용을 넣어줍니다.
$ vi ./src/SDL/i_sshot.c
#ifndef png_error_ptr_NULL
#define png_error_ptr_NULL NULL
#endif
#ifndef png_infopp_NULL
#define png_infopp_NULL NULL
#endif
-- 다시 make 를 시도하면 성공합니다. 오예~
-- 설치를 위해 make install 해줍니다.
$ make install
--설치 디렉토리로 가서 실행을 해봅니다. 이런..에러가 나네요.
$ cd ~/doom_prboom_x86/games
~/doom_prboom_x86/games$ ./prboom
prboom v2.5.0 (http://prboom.sourceforge.net/)
I_SetAffinityMask: manual affinity mask is 1
M_LoadDefaults: Load system defaults.
default file: /home/multitab/.prboom/prboom.cfg
IdentifyVersion: IWAD not found
-- 우리가 컴파일한 것은 doom 실행파일이며 실제 동작을 위해서는 wad 라 부르는 재료파일이 추가로 필요합니다. 역시 다운 받아 줍니다.
-> doom1.wad 다운로드 후 실행
$ wget https://distro.ibiblio.org/slitaz/sources/packages/d/doom1.wad
~/doom_prboom_x86/games$ ./prboom
짜잔~. 드디어 둠 화면을 보게 되었습니다. 이상하게 제컴에서는 화살표까지는 먹는데 이후 진행이 안되네요. 하지만 이번엔 게임을 띄우는 것까지가 목표이니까.. 어쨌든 성공입니다.
참고. 컴파일이 완료된 후 이동된 디렉토리와 파일 현황.
이번에는 과정을 약간 변경 해 봅시다.
Case 2: target host - x86, SDL 라이브러리 소스로 직접 설치.
-- 위에서 설치한 libsdl1.2-dev 와 함께 설치된 라이브러리들의 흔적을 지워줍니다.
$ sudo apt remove libsdl1.2-dev
$ sudo apt autoremove
-- 기존 컴파일된 흔적도 지우고 다시 세팅을 시작합니다.
-- 구분을 위해 이번엔 설치 경로를 약간 다르게 주었습니다. 물론 똑같은 에러가 나겠지요.
$ make clean
$ ./configure --prefix=$HOME/doom_prboom_x86_sdl --disable-gl --without-net
checking for SDL - version >= 1.1.3... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: *** You must have the SDL libraries installed before you can compile prboom
*** See http://prboom.sourceforge.net/linux.html
-- SDL 1.2 수동 컴파일 설치
-- 관련소스를 다운 받고 압축을 푼후 컴파일해 줍니다. 별 특이사항 없으면 다행이고 막히면 건바이건으로 해결해야 합니다.
$ git clone https://github.com/libsdl-org/SDL-1.2
$ cd SDL-1.2/
$ ./configure --prefix=$HOME/sdl/x86
$ make
$ make install
-- 저는 다행히 별 무리 없이 완료되었습니다. 멈췄던 configure 를 다시 시작 합니다.
-- case1 에서는 sdl 디렉토리를 자동으로 찾았었는데 이번에는 수동으로 명시를 해주어야 합니다.
$ ./configure --prefix=$HOME/doom_prboom_x86_sdl --disable-gl --without-net \
--with-sdl-prefix=$HOME/sdl/x86 \
--with-sdl-exec-prefix=$HOME/sdl/x86
$ make
$ make install
-- 오. 문제 없이 컴파일까지 되었군요. 필요한 경우 wad 파일 복사.
~/doom_prboom_x86_sdl/games$ cp ~/doom_prboom_x86/games/doom1.wad .
-- 신나서 실행해 봅니다. 그런데 웬걸. 아래와 같은 에러가 발행하였습니다.
$ ./prboom
prboom v2.5.0 (http://prboom.sourceforge.net/)
I_SetAffinityMask: manual affinity mask is 1
Could not initialize SDL [No available video device]
'Could not initialize SDL [No available video device]' 이 메세지로 구글을 엄청 검색하여도 사실 해결에 도움되는 답변은 없었습니다. 하지만 뭔가 libsdl1.2-dev 패키지를 apt 로 설치했을 때와는 다른게 있어서이겠지요.
이때부터 또 엄청난 삽질을 시작 합니다. 군에서나 회사에서나 '삽질'은 우리 전문 아니겠습니까?
다음은 sudo apt install libsdl1.2-dev 했을 때 나오는 메세지 중 일부입니다. 즉, 함께 설치되는 82개의 패키지중 일부가 실행시에도 필요하다는 얘기입니다.
The following NEW packages will be installed:
alsa-topology-conf alsa-ucm-conf libasound2 libasound2-data libasound2-dev libasyncns0 libblkid-dev libcaca-dev
libcaca0 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libffi-dev libflac8 libgl-dev libgl1
libgl1-amber-dri libgl1-mesa-dri libglapi-mesa libglib2.0-dev libglib2.0-dev-bin libglu1-mesa libglu1-mesa-dev
libglvnd0 libglx-dev libglx-mesa0 libglx0 libllvm15 libmount-dev libogg0 libopengl0 libopus0 libpciaccess0 libpcre16-3
libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpng-dev libpng-tools
libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0 libpulse0 libsdl1.2-dev libsdl1.2debian libselinux1-dev
libsensors-config libsensors5 libsepol-dev libslang2-dev libsndfile1 libvorbis0a libvorbisenc2 libx11-dev libx11-xcb1
libxau-dev libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shm0 libxcb-sync1
libxcb-xfixes0 libxcb1-dev libxdmcp-dev libxext-dev libxshmfence1 libxxf86vm1 pkg-config python3-distutils
python3-lib2to3 uuid-dev x11proto-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
0 upgraded, 82 newly installed, 0 to remove and 0 not upgraded.
이름만 봐서는 어떤 역할인지도 잘 모르겠고 하나를 지웠을 때 디펜던시 문제로 인해 함께 지워지는 경우도 있습니다. 위의 패키지를 '하나하나 수동으로 지워가면서, 필요에 따라 다시 설치했다가 & 컴파일 & 실행' 을 반복하여 결국 꼭 필요한 라이브러리를 추려냈습니다.
libsdl1.2debian libasound2 libasound2-data libcaca0 libflac8 libpulse0 libopus0 libogg0 libsndfile1 libvorbis0a libvorbisenc2 libx11-xcb1
(원래 인터넷 짤방은 안쓰는데 이번건은 너무 삽질을 많이 해서)
그런데 이렇게 정리해 놓고 나중에 비교해 보니 libsdl1.2debian 패키지를 설치하면 함꼐 설치되는 디펜던시 패키지들과 거의 유사합니다(alsa-topology-conf alsa-ucm-conf 제외하고 동일). 이런 된장. 이게 다 위에서 정리를 했기 때문에 구분할 수 있다고 위안을...
libsdl1.2debian 설치시 함께 설치되는 패키지
alsa-topology-conf alsa-ucm-conf libasound2 libasound2-data libcaca0 libflac8 libogg0 libopus0 libpulse0
libsdl1.2debian libsndfile1 libvorbis0a libvorbisenc2 libx11-xcb1
-- libsdl1.2debian 패키지를 설치해주고 실행하면 구동이 됩니다.
$ sudo apt install libsdl1.2debian
$ ./prboom
재활용.
doom 을 동작시키려는 타겟이 다행히 debian 계열이라면 libsdl1.2debian 패키지를 설치하면 쉽게 해결이 가능하겠지만 그렇지 않은 경우에는 문제가 해결되지 않습니다.
추가 고민.
이런 과정을 거치고 나니 실행 프로그램이 들어 있는 libsdl1.2debian 과 컴파일을 위한 헤더파일과 라이브러리가 들어 있는 ibsdl1.2-dev 이 어떻게 다른지 이해가 갔습니다. 그래서 컴파일시에는 -dev 패키지가 사용되고 실제 실행할 때는 libsdl1.2debian 만 있어도 됩니다.
$ dpkg -L libsdl1.2-dev
.. 일반 디렉토리. doc, man 은 제외..
/usr/bin/sdl-config
/usr/include/SDL/SDL.h
/usr/include/SDL/SDL_active.h
/usr/include/SDL/SDL_audio.h
/usr/include/SDL/SDL_byteorder.h
/usr/include/SDL/SDL_cdrom.h
/usr/include/SDL/SDL_config.h
/usr/include/SDL/SDL_cpuinfo.h
/usr/include/SDL/SDL_endian.h
/usr/include/SDL/SDL_error.h
/usr/include/SDL/SDL_events.h
/usr/include/SDL/SDL_getenv.h
/usr/include/SDL/SDL_joystick.h
/usr/include/SDL/SDL_keyboard.h
/usr/include/SDL/SDL_keysym.h
/usr/include/SDL/SDL_loadso.h
/usr/include/SDL/SDL_main.h
/usr/include/SDL/SDL_mouse.h
/usr/include/SDL/SDL_mutex.h
/usr/include/SDL/SDL_name.h
/usr/include/SDL/SDL_opengl.h
/usr/include/SDL/SDL_platform.h
/usr/include/SDL/SDL_quit.h
/usr/include/SDL/SDL_rwops.h
/usr/include/SDL/SDL_stdinc.h
/usr/include/SDL/SDL_syswm.h
/usr/include/SDL/SDL_thread.h
/usr/include/SDL/SDL_timer.h
/usr/include/SDL/SDL_types.h
/usr/include/SDL/SDL_version.h
/usr/include/SDL/SDL_video.h
/usr/include/SDL/begin_code.h
/usr/include/SDL/close_code.h
/usr/lib/x86_64-linux-gnu/libSDL.a
/usr/lib/x86_64-linux-gnu/libSDLmain.a
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/sdl.pc
/usr/share/aclocal/sdl.m4
/usr/lib/x86_64-linux-gnu/libSDL.so
$ dpkg -L libsdl1.2debian
.. 일반 디렉토리. doc, man 은 제외..
/usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0.11.4
/usr/share/lintian/overrides/libsdl1.2debian
/usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
아직 이해가 안가는건 prboom 홈페이지에서는 ibsdl1.2 관련 이야기는 하고 있지만 그외 패키지들에 대해서는 필요 여부를 밝히지 않고 있습니다. 위 필수 패키기들중 libsdl1.2debian 만 실제로 필요하고 나머지들은 의존성 때문에 못 지우는 것이 아닌가 의심을 해보고 나머지 패키지들을 강제로 하나씩 지워 봅니다. apt 명령으로는 강제 삭제가 안되서 dpkg 명령으로 삭제를 진행했습니다.
기대를 하고 실행을 해봤는데 아쉽게도 관련 패키지를 지울 때 마다 그에 연결되는 라이브러리 에러가 발행했습니다.
--의존성이 걸린 패키지는 다음처럼 강제로 지울 수 있습니다.
$ sudo dpkg --purge --ignore-depends=libpulse0,libsdl1.2debian,libvorbisenc2,libsndfile1 libvorbisenc2
--이후 ./prboom 실행
libasound2:
error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory
libasyncns0:
error while loading shared libraries: libasyncns.so.0: cannot open shared object file: No such file or directory
libcaca0:
error while loading shared libraries: libcaca.so.0: cannot open shared object file: No such file or directory
libflac8:
error while loading shared libraries: libFLAC.so.8: cannot open shared object file: No such file or directory
libogg0:
error while loading shared libraries: libogg.so.0: cannot open shared object file: No such file or directory
libpulse0:
error while loading shared libraries: libpulse-simple.so.0: cannot open shared object file: No such file or directory
libsndfile1:
error while loading shared libraries: libsndfile.so.1: cannot open shared object file: No such file or directory
libvorbis0a:
error while loading shared libraries: libvorbis.so.0: cannwot open shared object file: No such file or directory
libvorbisenc2:
error while loading shared libraries: libvorbisenc.so.2: cannot open shared object file: No such file or directory
ldd 명령을 통하면 의존성이 필요한 라이브러리들을 볼 수 있다고 합니다.
-- 수동으로 컴파일한 경우 필요로 포함된 라이브러리. 실행 불가 상태.
~/doom_prboom_x86_sdl/games$ ldd prboom
linux-vdso.so.1 (0x00007ffea648f000)
libSDL-1.2.so.0 => /home/multitab/sdl/x86/lib/libSDL-1.2.so.0 (0x00007f29a71c9000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f29a70dd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f29a6eb5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f29a73a3000)
-- apt 로 설치한 경우 사용되는 라이브러리. 실행 가능 상태.
~/doom_prboom_x86/games$ ldd prboom
linux-vdso.so.1 (0x00007ffd1b0e9000)
libSDL-1.2.so.0 => /lib/x86_64-linux-gnu/libSDL-1.2.so.0 (0x00007f99ba4e1000)
libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f99ba4a6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f99ba3bf000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f99ba197000)
libasound.so.2 => /lib/x86_64-linux-gnu/libasound.so.2 (0x00007f99ba094000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f99ba08f000)
libpulse-simple.so.0 => /lib/x86_64-linux-gnu/libpulse-simple.so.0 (0x00007f99ba086000)
libpulse.so.0 => /lib/x86_64-linux-gnu/libpulse.so.0 (0x00007f99ba031000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f99b9ef1000)
libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f99b9edc000)
libcaca.so.0 => /lib/x86_64-linux-gnu/libcaca.so.0 (0x00007f99b9e10000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f99b9e0b000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f99b9ded000)
/lib64/ld-linux-x86-64.so.2 (0x00007f99ba6ea000)
libpulsecommon-15.99.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so (0x00007f99b9d68000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f99b9d1a000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f99b9cf0000)
libslang.so.2 => /lib/x86_64-linux-gnu/libslang.so.2 (0x00007f99b99f9000)
libncursesw.so.6 => /lib/x86_64-linux-gnu/libncursesw.so.6 (0x00007f99b99bb000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f99b9989000)
libsndfile.so.1 => /lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007f99b990a000)
libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f99b9905000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f99b983e000)
libasyncns.so.0 => /lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007f99b9836000)
libapparmor.so.1 => /lib/x86_64-linux-gnu/libapparmor.so.1 (0x00007f99b981f000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f99b9819000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f99b9811000)
libFLAC.so.8 => /lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007f99b97d5000)
libvorbis.so.0 => /lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007f99b97a8000)
libvorbisenc.so.2 => /lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007f99b96fb000)
libopus.so.0 => /lib/x86_64-linux-gnu/libopus.so.0 (0x00007f99b969d000)
libogg.so.0 => /lib/x86_64-linux-gnu/libogg.so.0 (0x00007f99b9692000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f99b9667000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f99b9598000)
liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f99b9578000)
libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f99b956b000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f99b942d000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f99b9415000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f99b93ef000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f99b93e2000)
apt 로 설치한 경우 생각보다 상당히 많은 라이브러리를 필요로 하는군요. 정상적으로 실행을 하려면 위에 언급된 모든 라이브러리가 실행할 때 꼭 있어야 한다는 말이 되는데요.
컴파일된 실행파일과 필요시 SDL 관련 .so 정도만 포장을 해서 가져가면 될줄 알았는데 포장 대상이 너무 많아져 버렸습니다. 이게 맞는 것일까요? 어쨌든 다음 진도도 있으니 우선은 libsdl1.2debian 은 수동으로 설치하고 다음을 기약해 봅시다.
'나름 IT 이야기' 카테고리의 다른 글
ARM 환경에서 둠 실행하기. III편 - Buildroot (0) | 2023.11.11 |
---|---|
ARM 환경에서 둠 실행하기. II편 - Cross Compile (0) | 2023.11.11 |
WSL 1 vs WSL 2 실질적인 차이점 (0) | 2023.11.01 |
갤럭시 워치4 vs 갤럭시 핏2 (0) | 2023.06.30 |
Acer One 13 노트북 배터리 교체 (3) | 2023.03.29 |