Unix Linux

솔라리스 SPARC 플랫폼, x86 플랫폼 간의 컴파일러 차이점

_침묵_ 2007. 9. 22. 04:06
 이 아티클의 영문 원본은

http://developers.sun.com/solaris/articles/x86_compiler_diffs.html
에서 볼수 있습니다.

주제:


소개

ISV 와 개발자들은 솔라리스 x86 플랫폼에서 여러개의 컴파일러를 선택할 수 있습니다. 가장 보편적인 선택은 썬 스튜디오 컴파일러와 GCC 입니다. 만약 어플리케이션이 주로 SPARC 플랫폼에서 썬 스튜디오 개발자 툴로 개발되었다면 솔라리스 x86 으로 포팅은 매우 쉽습니다.

만약 어플리케이션을 리눅스에서 솔라리스로 포팅하려 한다면 GCC 를 사용 하는것이 같은 빌드 환경을 사용할 수 있다는 점때문에 좀 더 쉽습니다. 리눅스와 솔라리스 x86 플랫폼에서 동일한 컴파일러 플래그를 사용하기 때문에 플래그를 변경해야 할 필요가 없습니다.

다음의 그림은 솔라리스 x86 플랫폼에서 어플리케이션이 지원될 수 있는 서로 다른 방법들을 보여 줍니다. 

그림 1: 컴파일러 옵션의 차이와 난이도 평가

사용자 삽입 이미지

만약 여러개의 컴파일러를 사용하고 있다면 ABI 비호환성 이슈를 겪을 가능성이 큽니다. C++ 컴파일러는 ABI 호환성이 없습니다. 즉 하나의 C++ 컴파일러로 링크된 오브젝트는 다른 컴파일러에 의해 생성된 오브젝트와 같이 링크될 수 없습니다. 만약 썬 스튜디오 컴파이러를 사용하고 있다면(x86 솔라리스에서 가장 많이 사용되는 컴파일러는 GCC 임) 여러분의 어플리케이션의 모든 모듈들이 썬 스튜디오 컴파일러로 컴파일 되었는지 반드시 확인해야 합니다; 그렇지 않으면 여러분의 코드를 링크하기 불가능할 것입니다.

만약 어플리케이션이 백엔드 컴파일러 플래그를 사용해서 SPARC 플랫폼을 위해 최적화 되었다면 몇몇 플래그들은 x86 플랫폼에서 호환되지 않을 것입니다. 이러한 플래그들은 삭제 되거나 x86 에 맞는 플래그로 대체되어야 합니다. 이 글의 뒷부분에서 플래그의 차이점이 정리된 목록을 참고할 수 있습니다.

맨 위로 가기

썬 스튜디오 개발자 툴

썬 스튜디오 소프트웨어는 C, C++, 포트란 컴파일러; 퍼포먼스 분석기; 그리고 디버거로 구성되어 있습니다. 전체 컴파일 아키텍쳐는 컴파일러와 어셈블러 그리고 링크 에디터로 구성되어 있습니다. 컴파일러는 front-end 와 back-end 컴포넌트로 만들어져 있습니다. front-end 는 소스 언어에 기반한 구문 및 의미 분석기로 이루어져 있고 back-end 는 특정 하드웨어를 위한 명령어 셋에 기반한 코드 최적화 및 코드 생성 모듈로 구성되어 있습니다.

썬 스튜디오 개발자 툴은 솔라리스 SPARC 및 x86 플랫폼에서 모두 사용이 가능합니다. 컴파일러가 동일한 front-end 를 공유하므로 코드는 손 쉽게 플랫폼 간에 포팅될 수 있습니다. 어플리케이션 특수한 정의들 (예를 들어, #ifdef __sparc) 은 포팅 전에 직접적인 수정이 필요할 것입니다.

퍼포먼스가 중요한 어플리케이션은 보통 플랫폼 특수한 최적화 플래그를 통해서 좋은 퍼포먼스를 얻을 수 있도록 합니다. 이러한 플래그들은 아키텍쳐에 의존적으로 SPARC 과 x86 플랫폼에서 각각 다릅니다. 이 글은 이러한 차이점에 대해 자세히 설명합니다.

이 글은 어플리케이션이 SPARC 플랫폼에서 x86 플랫폼으로 썬 스튜디오 제품을 통해 포팅하는 시나리오에 촛점을 맞추어 설명합니다.

맨 위로 가기

x86 플랫폼에서 사용되지 않는 SPARC 플랫폼 용 컴파일러 옵션

다음의 옵션들은 썬 스튜디오 소프트웨어의 SPARC 버전에서 사용되는 옵션들입니다; 이 것들은 x86 에는 존재하지 않습니다. 소스 프로그램을 이러한 옵션을 사용하여 x86 플랫폼에서 컴파일하면 잘못된 옵션이 사용되었다는 warning 메세지가 출력되거나 컴파일러가 이러한 옵션들을 무시합니다.

표 1: 썬 스튜디오 옵션들 (SPARC 버전)

컴파일러 옵션 설명 x86 버전에서의 동작
-cg89 (C++) 이 옵션은 cc 의 -xcg89 와 동일합니다. SPARC 아키텍쳐에서 런타임 퍼포먼스 향상을 위해 사용됩니다. C++ 코드를 범용 SPARC 아키텍쳐용으로 컴파일 합니다. -xtarget=ss2 와 동일합니다. C++ 컴파일러에 의해 Warning 발생 [1]
-cg92 (C++) 이 옵션은 cc 의 -xcg92 와 동일합니다. SPARC 아키텍쳐에서 런타임 퍼포먼스 향상을 위해 사용됩니다. C++ 코드를 SPARC v8 아키텍쳐용으로 컴파일 합니다. -xtarget=ss1000 와 동일합니다. C++ 컴파일러에 의해 Warning 발생[1]
-dalign (C) -xmemalign=8s 와 동일합니다. 이 플래그는 확실히 결정할 수 없는 상황에서 컴파일러가 최대 메모리 유저가 최대 메모리 정렬을 8바이트로 가정하도록 지정합니다. 또한 잘못 정렬된 메모리에 대한 접근이 일어 났을때 SIGBUS 를 발생시킵니다. 옵션 무시됨[3]
-fns SPARC 의 비표준 부동소숫점 모드를 활성화 시킵니다. 비표준 모드가 활성화 되면 부동소숫점 계산은 IEEE 754 표준의 요구사항에 맞지 않는 결과를 생성할 것입니다. 옵션 무시됨[3]
-misalign -xmemalign=1i 와 동일합니다. 이 플래그는 유저가 이 플래그는 확실히 결정할 수 없는 상황에서 컴파일러가 최대 메모리 유저가 최대 메모리 정렬을 1바이트로 가정하도록 지정합니다. 이 옵션은 잘못 정렬된 메모리 접근이 일어 났을때 계속해서 메모리 접근이 해석되고 실행되도록 지정합니다. 옵션 무시됨[3]
-misalign2 (C) -xmemalign=2i 와 동일합니다. 이 플래그는 유저가 이 플래그는 확실히 결정할 수 없는 상황에서 컴파일러가 최대 메모리 유저가 최대 메모리 정렬을 2바이트로 가정하도록 지정합니다. 또한 잘못 정렬된 메모리에 대한 접근이 일어 났을때 SIGBUS 를 발생시킵니다. 옵션 무시됨[3]
-xalias_level 타입-기반의 alias 분석을 사용해서 최적화(-xO 옵션을 사용)를 수행할때 컴파일러에 의해 만들어지는 가정을 결정하는데에 사용됩니다. C 컴파일러에 의해 Warning 발생 [2]
-xautopar (C) 이 옵션은 SPARC 아키텍쳐에서 사용되는 멀티 프로세서를 위한 자동 병렬화를 활성화 시킵니다. 또한 의존성 분석(내부 반복문의 데이타 의존성을 분석) 하고 루프를 재생성 합니다. 옵션 무시됨[3]
-xcache (C++) 이 옵션은 최적화 모듈이 사용할 캐시 속성을 정의하데 사용 됩니다. C++ 컴파일러에 의해 Warning 발생[1]
-xcg89 (C) 이 옵션은 SPARC 아키텍쳐에서 런타임 퍼포먼스 향상을 위해 사용됩니다. 범용적인 SPARC 아키텍쳐에서 C++ 코드를 컴파일하는데에 사용 됩니다. -xtarget=ss2 (-xarch=v7 -xchip=old -xcache=64/32/1) 와 동일합니다. 옵션 무시됨[3]
-xcg92 (C) 이 옵션은 SPARC 아키텍쳐에서 런타임 퍼포먼스 향상을 위해 사용됩니다. C++ 코드를 SPARC v8 아키텍쳐용으로 컴파일 합니다. -xtarget=ss1000 (-xarch=v8 -xchip=super -xcache=16/32/4:1024/32/1) 와 동일합니다. 옵션 무시됨[3]
-xcheck 이 옵션은 스택 오버플로우를 런타임에 체크하는 루틴을 추가 합니다. C 컴파일러에 의해 Warning 발생[2]
-xcode 이 옵션은 코드 주소 공간을 지정합니다. C 컴파일러에 의해 Warning 발생[2]
-xcrossfile (C) 이 옵션은 최적화 및 소스 파일의 인라이닝을 활성화 합니다. 옵션 무시됨[3]
-xdepend (C) 이 옵션은 내부 반복문의 데이타 의존성을 검사하고 루프를 재생성합니다. 옵션 무시됨[3]
-xexplicitpar(C) 이 옵션은 #pragma MP 지시자에서 지정한 숫자를 기반으로 병렬화된 코드를 생성합니다. 옵션 무시됨[3]
-xhwcprof (C) 이 옵션은 하드웨어 카운터-기반 프로파일링 컴파일러 지원을 활성화 합니다. 옵션 무시됨[3]
-xia (C++) 이 옵션은 적절한 간격 수식 라이브러리를 링크 하고 적절한 부동소숫점 환경을 설정합니다. C 컴파일러에 의해 Warning 발생[1]
-xipo 이 옵션은 내부-프로시저의 최적화를 수행합니다. 옵션 무시됨[3]
-xjobs 이 옵션은 컴파일러가 병렬로 fork 할 수 있는 최대 컴포넌트 갯수를 지정합니다. C 컴파일러에 의해 Warning 발생[2]
-xldscope 이 옵션은 extern 심볼 정의의 기본 링커 범위를 변경하기 위해 사용 됩니다. C 컴파일러에 의해 Warning 발생[2]
-xlic_lib=sunperf 이 옵션은 썬이 제공하는 퍼포먼스 라이브러리들을 링크 합니다. 옵션 무시됨[3]
-xlinkopt (C) 이 옵션은 컴파일러가 링크-타임 최적화를 결과 실행파일 혹은 동적 라이브러리에서 오브젝트 파일 내의 어떠한 최적화 보다 더 상위로 수행 하도록 합니다. C 컴파일러에 의해 Warning 발생[2]
-xloopinfo (C) 이 옵션은 어떠한 루프가 병렬화 되고 되지 않았는지 보여 줍니다. C 컴파일러에 의해 Warning 발생[2]
-xmemalign 이 옵션은 메모리 정렬을 최대로 가정하고 잘못 정렬된 데이타로 접근에 대한 행동을 지정합니다. C 컴파일러에 의해 Warning 발생[2]
-xMerge 이 옵션은 데이타 세그먼트를 텍스트 세그먼트로 병합시킵니다. 옵션 무시됨[3]
-xopenmp 이 옵션은 OpenMP 지시자를 이용ㅇ해서 명시적으로 병렬화를 활성화 시킵니다. C 컴파일러에 의해 Warning 발생[2]
-xpagesize 이 옵션은 스택과 힙에 페이지 사이즈를 설정합니다. C 컴파일러에 의해 Warning 발생[2]
-xpagesize_heap 이 옵션은 힙의 적정 사이즈를 설정합니다. C 컴파일러에 의해 Warning 발생[2]
-xpagesize_stack 이 옵션은 스택의 적정 사이즈를 설정합니다. C 컴파일러에 의해 Warning 발생[2]
-xport64 (C++) 이 옵션은 64-비트 환경으로 포팅된 코드를 디버깅하도록 도와 줍니다. C++ 컴파일러에 의해 Warning 발생[1]
-xparallel (C) 이 옵션은 루프를 컴파일러에 의해 자동으로 혹은 프로그래머가 명시적으로 지정한대로 병렬화 시킵니다. 옵션 무시됨[3]
-xprefetch 이 옵션은 prefetch 명령을 prefetch 를 지원하는 아키텍쳐 상에서 활성화 하도록 설정합니다. C 컴파일러에 의해 Warning 발생[2]
-xprefetch_level 이 옵션은 pre-fetch 되는 명령어의 갯수를 -xprefetch=auto 와 함께 사용 하여 지정합니다. C 컴파일러에 의해 Warning 발생[2]
-xprofile_ircache 이 옵션은 -xprofile=collect,혹은-xprofile=use 와 함께 사용하여 collect 단계에서 저장된 컴파일 데이타를 재사용하여 컴파일 시간을 향상 시킵니다. C 컴파일러에 의해 Warning 발생[2]
-xprofile_pathmap 이 옵션은 -xprofile=use 와 함께 사용되고 오브젝트 파일이 컴파일된 디렉토리의 UNIX 경로 이름의 prefix 를 사용합니다. C 컴파일러에 의해 Warning 발생[2]
-xreduction (C) 이 옵션은 자동 병렬화시에 제거 인지를 활성화 시킵니다. 옵션 무시됨[3]
-xregs 이 옵션은 생성된 코드를 위한 레지스터 사용방법을 지정합니다. C 컴파일러에 의해 Warning 발생[2]
-xrestrict (C) 이 옵션은 포인터 값을 갖는 파라미터를 제한된 포인터로 다루도록 합니다. 옵션 무시됨[3]
-xsafe=mem 이 옵션은 컴파일러가 어떠한 메모리-기반 trap 도 이루어나지 않는 것을 가정하도록 합니다. 옵션 무시됨[3]
-xspace 이 옵션은 명령어를 코드 사이즈를 증가 시키는 어떠한 최적화나 루프 병렬화도 하지 않도록 컴파일러에 전달합니다. 옵션 무시됨[3]
-xthreadvar 이 옵션은 쓰레드 로컬 변수의 구현을 조정합니다. C 컴파일러에 의해 Warning 발생[2]
-xvector 이 옵션은 벡터 라이브러리 함수로의 호출을 자동으로 생성하는 것을 활성화 합니다. C 컴파일러에 의해 Warning 발생[2]
-xvis 이 옵션은 어셈블리-언어 템플릿이 VIS 명령-셋 소프트웨어 개발자 키트(VSDK) 가 사용되었을때 사용 됩니다. 옵션 무시됨[3]
-xvpara (C) 이 옵션은 #pragma MP 지시자에 의해 지정된 루프가 병렬화가 올바르게 지정되지 않았을때 에러를 보여 줍니다. 옵션 무시됨[3]
-Zll (C) 이 옵션은 lock_lint 를 위한 프로그램 데이타베이스를 생성합니다. 그러나 실행 코드를 생성하지는 않습니다. 옵션 무시됨[3]

키: (C) 는 컴파일러 옵션이 cc (C 컴파일러) 에 의해 사용됨을 나타냄. (C++) 은 컴파일러 옵션이 CC (C 컴파일러) 에 의해 사용됨을 나타냄. 이외의 경우에는 cc 와 CC 에 모두 사용 가능함.

참고자료: 
[1] C++ 컴파일러 옵션으로 오직 SPARC 플랫폼에서만 동작합니다. 그리고 x86 플랫폼에서 사용될때 warning 메세지를 출력합니다. 이 warning 을 회피하기 위해서 이 컴파일러 옵션은 x86 플랫폼에서 사용되면 안됩니다.
[2] C 컴파일러 옵션으로 오직 SPARC 플랫폼에서만 동작합니다. 그리고 x86 플랫폼에서 사용될때 warning 메세지를 출력합니다. 이 warning 을 회피하기 위해서 이 컴파일러 옵션은 x86 플랫폼에서 사용되면 안됩니다. 
[3] 이 옵션은 오직 SPARC 플랫폼에서만 유효 합니다. x86 플랫폼에서 사용 되면 어떠한 warning 도 발생시키지는 않지만 SPARC 플랫폼 상에서 바이너리를 생성될때 이 옵션은 무시 됩니다.

맨 위로 가기

SPARC 에서 사용되지 않는 x86 플랫폼 용 컴파일러 옵션

다음의 옵션들은 썬 스튜디오 소프트웨어의 x86 버전에서 사용되는 옵션들입니다; 이 것들은 SPARC 에는 존재하지 않습니다. 소스 프로그램을 이러한 옵션을 사용하여 SPARC 플랫폼에서 컴파일하면 잘못된 옵션이 사용되었다는 warning 메세지가 출력되거나 컴파일러가 이러한 옵션들을 무시합니다.

표 2: 썬 스튜디오 옵션 (x86 버전)


컴파일러 옵션 설명 SPARC 버전에서의 동작
-386 (C++) -xtarget=386 와 동일합니다. 타겟 플랫폼을 386-기반 명령어 셋과 최적화로 지정합니다. C++ 컴파일러에 의해 Warning 발생[1]
-486 (C++) -xtarget=486 와 동일합니다. 타겟 플랫폼을 486-기반 명령어 셋과 최적화로 지정합니다. C++ 컴파일러에 의해 Warning 발생[1]
-fprecision 이 옵션은 부동소숫점 컨트롤 워드 내의 반올림 정확성 모드 비트를 싱글(24 비트), 더블 (53 비트) 혹은 확장(64 비트) 로 초기화 시킵니다. 옵션 무시됨[3]
-fstore 이 옵션은 컴파일러가 부동소숫점 표현 값 혹은 함수를 레지스터에 값을 저장하는 대신에 왼쪽 편에 대입 되는 타입으로 변환합니다.: 표현 혹은 함수가 변수에 저장될 경우에만. 이 표현은 좀 더 작은 부동소숫점 타입으로 캐스팅 됩니다. 옵션 무시됨[3]
-nofstore 이 옵션은 표현식의 강제 정확성을 비활성화 시킵니다. 옵션 무시됨[3]
-x386 (C) 이 옵션은 80386 프로세서를 위한 코드를 최적화 시킵니다. 옵션 무시됨[3]
-x486 (C) 이 옵션은 80486 프로세서를 위한 코드를 최적화 시킵니다. 옵션 무시됨[3]
-xpentium 이 옵션은 펜티엄 프로세서를 위한 코드를 최적화 시킵니다. C 컴파일러에 의해 Warning 발생[2]

키: (C) 는 컴파일러 옵션이 cc (C 컴파일러) 에 의해 사용됨을 나타냄. (C++) 은 컴파일러 옵션이 CC (C 컴파일러) 에 의해 사용됨을 나타냄. 이외의 경우에는 cc 와 CC 에 모두 사용 가능함.

참고자료: 
[1] C++ 컴파일러 옵션으로 오직 x86 플랫폼에서만 동작합니다. 그리고 SPARC 플랫폼에서 사용될때 warning 메세지를 출력합니다. 이 warning 을 회피하기 위해서 이 컴파일러 옵션은 SPARC 플랫폼에서 사용되면 안됩니다. 
[2] C 컴파일러 옵션으로 오직 x86 플랫폼에서만 동작합니다. 그리고 SPARC 플랫폼에서 사용될때 warning 메세지를 출력합니다. 이 warning 을 회피하기 위해서 이 컴파일러 옵션은 SPARC 플랫폼에서 사용되면 안됩니다. 
[3] 옵션은 오직 x86 플랫폼에서만 유효 합니다. SPARC 플랫폼에서 사용되면 어떠한 warning 도 발생시키지는 않지만 SPARC 플랫폼 상에서 바이너리를 생성될때 이 옵션은 무시 됩니다.

맨 위로 가기

양쪽 솔리스 버전 모두에서 사용되지만 다른 의미를 가지는 것들

다음의 옵션들은 SPARC 과 x86 플랫폼 양쪽 모두에서 사용 되지만 표에서 설명된대로 약간 다른 의미를 가집니다. 소스 프로그램이 솔라리스에서 이러한 옵션을 사용해서 컴파일 되면 각각의 플랫폼에서 서로 다른 값들이 옵션에 전달 됩니다.

표 3: 썬 스튜디오 옵션

컴파일러 옵션 설명 SPARC 에서의 값 x86 에서의 값
-Aname[(tokens)](C) 이 옵션은 name 을 특정 tokens 과 연관시킴. 마치 #define 전처리 지시자와 같음. preassertion 을 위한 값:
machine(sparc)
cpu(sparc)
preassertion 을 위한 값:
machine(i386)
cpu(i386)
-Dname[=tokens] 이 옵션은 name 을 특정 tokens 과 연관시킴. 마치 #define 전처리 지시자와 같음. 값들은:
sparc
(-Xc 모드에서 유효하지 않음) __sparc (모든 모드에서 유효함)
값들은:
i386
(-Xc 모드에서 유효하지 않음) __i386 (모든 모드에서 유효함)
-fast 이 옵션은 벤치마크 어플리케이션 최적화를 위한 기본 옵션을 지정함. 이 옵션은 SPARC 플랫폼에서 다음과 같이 확장딤:
-fns
-fsimple=2
-fsingle
-ftrap=%none
-xalias_level=basic
-xarch
-xbuiltin=%all
-xdepend
-xlibmil 
-xmemalign=8s
-xO5
-xprefetch=
auto,explicit
이 옵션은 x86 에서 다음과 같은 값으로 확장됨:
-fns 
-fsimple=2
-fsingle
-ftrap=%none
-nofstore
-xarch
-xbuiltin=%all
-xdepend 
-xlibmil
-xO5
-fnonstd 이 옵션은 부동소숫점 연산 하드웨어의 비표준 초기화를 유발함. 이 옵션은 다음과 같이 확장됨:
fns
-ftrap=common
이 옵션은 다음과 같이 확장됨: ftrap=common
-KPIC 이 옵션은 공유 라이브러리를 만드는 소스 파일을 컴파일 할때 사용 됨. 다음과 동일함: -xcode=pic32 Same as -Kpic
-Kpic 이 옵션은 공유 라이브러리를 만드는 소스 파일을 컴파일 할때 사용 됨. 다음과 동일함: -xcode=pic13 위치독립적인 코드와 함께 컴파일.
-PIC (C++) 이 옵션은 공유 라이브러리를 만드는 소스 파일을 컴파일 할때 사용 됨. 다음과 동일함: -xcode=pic32 -Kpic 와 동일함
-pic (C++) 이 옵션은 공유 라이브러리를 만드는 소스 파일을 컴파일 할때 사용 됨. 다음과 동일함: -xcode=pic13 -Kpic 와 동일함
-xarch 이 옵션은 명령어 셋 아키텍쳐(ISA) 를 지정함. 값들은 다음과 같음:
generic 
generic64
native
native64
v7
v8a
v8
v8plus
v8plusa
v8plusb
v9a
v9b
v9
값들은 다음과 같음:
generic
386
pentium_pro
-xchip 이 옵션은 최적화 모듈을 위해 타겟 프로세서를 지정함. 값들은 다음과 같음:
generic
old
super
super2
micro
micro2 
hyper 
hyper2 
powerup 
ultra 
ultra2 
ultra2e 
ultra2i 
ultra3 
ultra3cu
값들은 다음과 같음:
generic
386
486
pentium
pentium_pro
-xO 이 옵션은 레벨 셋에 따라 오브젝트 코드를 최적화 시킴. 값들은 다음과 같음:
xO1: 기본적인 로컬 최적화 수행
xO2: 기본적인 로컬, 글로벌 최적화 수행.
xO3-xO2 와 동일한 작업 수행, 그러나 외부 변수의 레퍼런스 혹은 정의도 최적화 수행. 
xO4: Performs like -xO3 와 동일하지만 동일 파일 내의 함수들을 인라이닝 시킴으로써 좀 더 빠른 실행을 보장.
xO5: 최고 수준의 최적화 코드 생성.
값들은 다음과 같음:
xO1: 메모리에서 미리 변수들을 로딩하고 크로스 점핑함 또한 기본 최적화의 기본.
XO2: 고수준 그리고 저수준 명령어를 스케줄링하고 향상된 spiil 분석, 루프 메모리 참조 제거, 레지스터 라이프타임 분석, 향상된 레지스터 할당 그리고 글로벌 공통 서브-익스프레션들을 수행.
xO3: 루프 제거, 귀납 변수 제거, -x02 옵션에 의해 생성되는 함수 기반 위에 작업을 수행.
xO4: 루프 풀기, 가능한한 스택프레임 생성 안하기, 동일 파일에서의 함수 인라이닝, -xO3 옵션에 의해 생성되는 함수에 기반 위에 작업을 수행.
xO5: 최고 수준의 최적화 코드 생성.
-xtarget 이 옵션은 명령어 셋과 최적화를 위한 타겟 시스템을 지정함. 값들은 다음과 같음:
native
native64
generic
generic64
<<platform-name>>
값들은 다음과 같음:
native
generic
386
486
pentium
pentium_pro

키: (C) 는 컴파일러 옵션이 cc (C 컴파일러) 에 의해 사용됨을 나타냄. (C++) 은 컴파일러 옵션이 CC (C 컴파일러) 에 의해 사용됨을 나타냄. 이외의 경우에는 cc 와 CC 에 모두 사용 가능함.

맨 위로 가기

결론

많은 어플리케이션들이 솔라리스 SPARC 플랫폼에서 어떠한 코드 수정도 거치지 않고 x86 플랫폼으로 마이그레이션 될 수 있습니다. 썬 스튜디오가 솔라리스의 SPARC 및 x86 버전 모두를 지원하기 때문에 동일한 컴파일러를 이용해서 어플리케이션을 포팅할 수 있습니다. 몇몇 컴파일러 플래그 들만 빌드 환경에서 교체하면 됩니다.

유사하게 리눅스에서 솔라리스로도 동일한 빌드 환경을 이용해서 어플리케이션을 포팅할 수 있습니다. 이 경우에는 어떠한 컴파일러 플래그도 변경할 필요가 없습니다.