g++는 64비트 시스템에서 64비트를 빌드합니까?

g++는 64비트 시스템에서 64비트를 빌드합니까?

대상 시스템에 대한 특정 플래그를 지정하지 않고 automake를 사용하여 라이브러리를 빌드하면 빌드가 수행되는 시스템에 따라 결과가 변경됩니까? 이는 64비트 운영 체제의 컴파일러는 64비트 결과를 생성하고 32비트 운영 체제의 컴파일러는 32비트 결과를 생성한다는 의미입니다. (나는 Fedora 16과 g++ 컴파일러를 사용하고 있습니다)

답변1

이 동작을 변경하는 플래그가 없는 한 바이너리 출력은 실행 중인 아키텍처와 동일할 것이라고 가정합니다. 따라서 무언가를 컴파일한 다음 바이너리에서 파일 명령을 실행하여 이를 확인할 수 있습니다. 64비트인지 32비트인지 알려줍니다.

답변2

예, 특별히 다르게 설정하지 않는 한 GCC는 프로세서 아키텍처에 맞게 컴파일합니다. (특정 CPU 변형이 아닌 일반 아키텍처 - 귀하의 경우 amd64, 일명 x86_64).

64비트 GCC의 일반적인 설치에서는 -m32해당 32비트 아키텍처(예: amd64 시스템의 x86)에 대한 컴파일이 전달됩니다. gcc --print-multi-lib어떤 아키텍처가 지원되는지 확인하려면 실행하세요 .

답변3

특정 프로젝트가 32비트 전용 라이브러리에 대한 명시적 또는 암시적 종속성이 없는 경우 automake64비트 실행 파일이 컴파일됩니다.

64비트 시스템이 풍부하고 32비트만 가능했던 기능이 다시 구현되면서 최신 시스템(예: Fedora 16을 포함한 2010년 이후)에서는 이런 일이 발생하지 않습니다.

관련 정보