2017-10-20 1 views
0

나는 배포하고 싶은 작은 게임을 가지고 있지만, 필요한 모든 공유 라이브러리를 배포하여 사용자가 설치할 의존성이 없도록하고 싶습니다.게임 (Linux)과 함께 제공되는 공유 라이브러리는 무엇입니까?

linux-vdso.so.1 (0x00007fff311c4000) 
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fcca3449000) 
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fcca3245000) 
    libGL.so.1 => /usr/lib/libGL.so.1 (0x00007fcca2fba000) 
    libGLEW.so.2.1 => /usr/lib/libGLEW.so.2.1 (0x00007fcca2d12000) 
    libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007fcca29f6000) 
    libSDL2_image-2.0.so.0 => /usr/lib/libSDL2_image-2.0.so.0 (0x00007fcca27d3000) 
    libSDL2_ttf-2.0.so.0 => /usr/lib/libSDL2_ttf-2.0.so.0 (0x00007fcca25cb000) 
    libSDL2_mixer-2.0.so.0 => /usr/lib/libSDL2_mixer-2.0.so.0 (0x00007fcca237c000) 
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fcca215e000) 
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fcca1da7000) 
    /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fcca3a68000) 
    libGLX.so.0 => /usr/lib/libGLX.so.0 (0x00007fcca1b75000) 
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fcca1836000) 
    libXext.so.6 => /usr/lib/libXext.so.6 (0x00007fcca1624000) 
    libGLdispatch.so.0 => /usr/lib/libGLdispatch.so.0 (0x00007fcca136e000) 
    librt.so.1 => /usr/lib/librt.so.1 (0x00007fcca1166000) 
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007fcca0ea0000) 
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007fcca0c77000) 
    libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007fcca0a67000) 
    libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007fcca0830000) 
    libz.so.1 => /usr/lib/libz.so.1 (0x00007fcca0619000) 
    libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007fcca0380000) 
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00007fcca017c000) 
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007fcc9ff76000) 
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007fcc9fc63000) 
    libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007fcc9fa37000) 
    libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007fcc9f7c4000) 

어떻게 사람이 어떤 리눅스 배포판에서 기본적으로 와서 어떤 사람이 내 게임을 함께 제공해야하는 알고 :

이 LDD의 출력입니까?

+1

현대 배포판에는 모든 배포판을 사용할 수 있습니다. –

+0

목록에있는 버전에서 사용할 수 있지만 반드시 그렇지는 않습니다. –

답변

0

Linux/Unix 응용 프로그램을 바이너리가 아닌 소스 코드로 배포하는 데에는 많은 이유가 있습니다. 다양한 플랫폼에서 작동하는 바이너리를 배포하는 것은 매우 어렵습니다. 배포 관련 소프트웨어 리포지토리가 Linux와 같은 기능을하는 것과 같은 이유입니다.

목록에있는 라이브러리는 일반적으로 사용할 수 있지만 버전은 배포마다 다릅니다. 이는 Linux가 다양한 CPU 및 하드웨어 아키텍처에서 실행하는 근본적인 문제를 무시하는 것입니다.

프로그램이 일반적으로 관심을 가질만한 경우, 최소한 (최소한 기술적으로는) 공급을 처리하는 것이 소스 코드를 github에서 사용 가능하게 만들고 배포 유지 보수 담당자에게 자신들의 소스 코드를 빌드하도록 설득하는 것입니다 배포판. 디스트로 관리자는 이런 종류의 일을 자동화했습니다.

그럴 수 없다면, 표준 C 라이브러리와 플랫폼 라이브러리를 제외하고 실행 파일을 배포해야 할 수도 있습니다. 즉, C 라이브러리 인 libdm, libpthread 및 libm에서 호환성을 가정 할 수 있습니다. 당신이 제공해야 할 모든 것. 라이브러리를 별도의 파일로 제공 할 수 있으며, LD_LIBRARY_PATH를 설정하여 스크립트를 사용할 수 있도록 설정하거나 실행 파일에 링크하는 일종의 스크립트 또는 래퍼를 제공 할 수 있습니다. 솔직히, 호스트 시스템이 빌드 시스템보다 훨씬 오래되거나 새로운 경우 플랫폼 라이브러리에서도 비 호환성이있을 수 있습니다.

또는 응용 프로그램에 런타임에 라이브러리를로드하도록하고 호스트 시스템에서 적절한 라이브러리를 찾으려고하는 일종의 논리가있을 수 있습니다. 아마도 호환성을 검사 할 것입니다. 이것이 Java JVM이 일반적으로하는 일입니다.

잘 작동하지 않는 것은 하나의 Linux 배포에서 응용 프로그램을 빌드하는 것입니다. 단지 다른 응용 프로그램에서 작동하기를 바랍니다. 운수 나쁘게.

관련 문제