http://developers.sun.com
에서 볼수 있습니다.
주제:
- 소개
- 썬 스튜디오 개발자 툴
- x86 플랫폼에서 사용되지 않는 SPARC 플랫폼 용 컴파일러 옵션
- SPARC 에서 사용되지 않는 x86 플랫폼 용 컴파일러 옵션
- 양쪽 솔리스 버전 모두에서 사용되지만 다른 의미를 가지는 것들
- 결론
소개
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 버전 모두를 지원하기 때문에 동일한 컴파일러를 이용해서 어플리케이션을 포팅할 수 있습니다. 몇몇 컴파일러 플래그 들만 빌드 환경에서 교체하면 됩니다.
유사하게 리눅스에서 솔라리스로도 동일한 빌드 환경을 이용해서 어플리케이션을 포팅할 수 있습니다. 이 경우에는 어떠한 컴파일러 플래그도 변경할 필요가 없습니다.
'Unix Linux' 카테고리의 다른 글
ksh 스크립트를 위한 스크립트 템플릿과 유용한 기술들 (0) | 2007.11.12 |
---|---|
리눅스(우분투)에서 gij 대신 sun java 사용하기 (0) | 2007.08.21 |
[Unix]swap 이란 무엇이며, 왜 시스템에 swap 이 필요한가 ? (0) | 2007.06.30 |