파일 이름에 종종 이 패턴이 있는 이유는 무엇입니까 - x86_64-pc-linux-gnu

파일 이름에 종종 이 패턴이 있는 이유는 무엇입니까 - x86_64-pc-linux-gnu

Linux 환경에서 파일 이름에 대해 표시되는 패턴은 다음과 같습니다.

x86_64-pc-linux-gnu

x86_64-linux-gnu-gcc

i386-pc-linux-gnu

이름의 첫 번째 부분처럼 보이 x86_64거나 i386하드웨어 아키텍처를 나타냅니다.

그런데 전체 이름이 어떻게 만들어졌는지 궁금하시죠? 이름의 다른 부분은 어떻게 형성됩니까?

답변1

이는 "트리플"이라고도 알려진 "구성 이름"입니다. 내가 아는 가장 좋은 설명은 다음과 같습니다.Ian Lance Taylor의 GNU 구성 및 빌드 시스템 문서.

구성 이름은 최대 4개 부분으로 나뉩니다(원래는 3개 부분이므로 "트리플"이라는 이름이 붙음).

  • CPU 또는 아키텍처( i386, x86_64, arm...)
  • "제조업체"( pc귀하의 경우)
  • 커널( linux)
  • 일반적으로 C 라이브러리( gnu,GNU C 라이브러리를 포함한 GNU 운영 체제), 그러나 더 구체적일 수도 있습니다( gnueabihfARM에서는ARM "임베디드" ABI 및 하드 부동 소수점을 사용하는 GNU 운영 체제)

pc두 번째 예 와 같이 이들 중 일부는 생략될 수 있습니다 .config.sub인식하는 "삼중"의 표준 형식을 제공합니다.

$ /usr/share/misc/config.sub x86_64-linux
x86_64-pc-linux-gnu
$ /usr/share/misc/config.sub djgpp
i586-pc-msdosdjgpp
$ /usr/share/misc/config.sub mingw32
i686-pc-mingw32
$ /usr/share/misc/config.sub vaxv
vax-dec-sysv

커널 및/또는 운영 체제가 없는 대상에 대한 몇 가지 변형이 있습니다(예 : arm-none-eabi, .x86_64-pc-elfx86_64-pc-none

이러한 구성 이름은 빌드 대상을 설명하는 데 사용되며 크로스 컴파일 시 일반적입니다(그러나 배타적이지는 않음). 이는 configure많은 옵션에 대한 인수로 사용될 수 있으며 도구를 구축하기 위한 접두사로 사용될 수 있습니다. 따라서 x86_64-linux-gnu-gccGCC는 x86_64-linux-gnu.

그 구조는 다소 신비하며 다음과 같은 결과를 초래할 수 있습니다.긴 토론...

관련 정보