다중 라이브러리 및 다중 아키텍처:이 두 용어는 단지 동의어인가요? 그렇지 않다면 어떻게 다른가요?
동일한 시스템에서 32비트 및 64비트 응용 프로그램을 실행하려면 이를 호출해야 합니까?다중 아키텍처 또는 다중 라이브러리?
답변1
동일한 일반적인 문제에 대한 서로 다른 접근 방식이지만 범위가 다릅니다. 즉, 서로 다른 아키텍처용으로 구축된 바이너리를 실행합니다.
바이너리를 실행하려면 세 가지가 필요합니다. 필요한 라이브러리(동적 로더가 있는 경우 포함), 시스템 호출에 대한 지원, 포함된 기계 명령어를 해석하는 수단입니다. Multilib과 multiarch는 첫 번째 문제를 해결합니다.
Multilib는 각 아키텍처에 대해 알려진 변형 테이블을 사용합니다. 이것은 처음에 ABI 변형을 해결했습니다.예를 들어lib32
MIPS에서 가장 일반적으로 사용되는 것은 x86의 32비트 지원입니다. 일반적 으로 32비트 라이브러리 디렉터리로 정의됩니다 (이 정의는 x86에만 해당됩니다). 따라서 multilib 설정은 에서 64비트 로더를 제공할 수 있습니다 /lib
. /lib32
컴파일러 측에서는 -m32
multilib를 사용하여 32비트 바이너리를 빌드하도록 지정합니다.
다중 아키텍처는 더 일반적입니다. 그 정의는 호스트 아키텍처에 의존하지 않습니다. 모든 라이브러리는 lib
대상 아키텍처 등에 해당하는 하위 디렉터리에서 찾을 수 있습니다 /usr/lib/x86_64-linux-gnu/
. /usr/lib/i386-linux-gnu
컴파일러 측에서는 적절한 크로스 컴파일러를 사용할 수 있습니다.
32비트 바이너리를 실행하는 데 사용하는 방법은 배포판에 따라 다릅니다. Debian과 그 파생 제품은 이제 multiarch를 사용하고, 다른 배포판은 multilib를 사용합니다.