주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

컴파일러 문제 해결

컴파일러 버전 불일치 오류

설명

빌드 과정에서 컴파일러 버전 불일치 오류가 발생합니다.

작업

  1. www.mathworks.com/support/compilers/current_release/에서 지원 및 호환되는 컴파일러 목록을 확인하십시오.

  2. 컴파일러를 업그레이드하거나 변경하십시오. 자세한 내용은 Choose and Configure Compiler 항목을 참조하십시오.

  3. 모델을 다시 생성하십시오.

모델 시뮬레이션 결과와 실행 프로그램 결과가 다르다

설명

해당 모델에 대해 생성된 프로그램은 모델 시뮬레이션 결과와 다른 결과를 산출합니다. 생성된 소스 코드에는 부호 있는 정수 오버플로우를 유발하는 산술 연산이 포함되어 있습니다. 사용 중인 컴파일러가 부호 있는 정수의 오버플로 상황에 대한 감싸기 동작을 구현하지 않았을 가능성이 있습니다. 또는, 래핑을 지원하는 컴파일러를 사용하고 있다면, -fwrapv 옵션을 사용하도록 설정하지 않았을 가능성이 있습니다.

자세한 내용은 C Compiler Considerations for Signed Integer Overflows 항목을 참조하십시오.

작업

  • 사용 중인 컴파일러에서 줄 바꿈 동작을 강제할 수 있다면, 이 기능을 활성화하세요. 예를 들어, gcc 컴파일러나 MinGW와 같이 gcc를 기반으로 하는 컴파일러의 경우, -fwrapv 컴파일러 옵션을 지정하십시오.

  • 정수 오버플로우를 검사하는 컴파일러를 선택하십시오.

  • Embedded Coder®를 사용 중이라면, 부호 있는 정수를 위해 생성된 코드를 대체할 코드 대체 라이브러리를 개발하여 적용하십시오.

코드 생성 및 산출

설명

빌드 과정에서는 예상된 소스 코드가 생성되지만, 실행 프로그램은 예상치 못한 결과를 나타냅니다. 생성된 소스 코드는 예상대로 표시됩니다. 그러나 이 실행 프로그램은 예상치 못한 결과를 나타냅니다.

작업

다음 중 하나를 수행하십시오:

  • 컴파일러 최적화 수준을 낮추세요.

    1. 컴파일러 최적화 수준 파라미터를 사용자 지정로 설정하십시오.

    2. 사용자 지정 컴파일러 최적화 플래그 필드에 더 낮은 최적화 수준을 지정하십시오.

    3. 모델을 다시 생성하십시오.

  • 컴파일러 최적화를 비활성화하십시오.

    1. 컴파일러 최적화 수준최적화 끄기(더 빠른 빌드)로 설정하십시오.

    2. 모델을 다시 생성하십시오.

자세한 내용은 Control Compiler Optimizations 및 사용 중인 컴파일러 설명서를 참조하십시오.

컴파일타임 문제

문제작업

컴파일러 구성에 오류가 있습니다.

MATLAB®가 사용하고자 하는 컴파일러와 버전을 지원하는지 확인하십시오. 현재 지원 및 호환되는 컴파일러 목록은 www.mathworks.com/support/compilers/current_release/을 참조하십시오. 필요한 경우 컴파일러를 업그레이드하거나 변경하십시오(Choose and Configure Compiler 또는 Choose and Configure Compiler 참조).

make 유틸리티, 컴파일러 또는 링커에 대한 환경 변수가 올바르게 설정되지 않았습니다. 예를 들어, Windows 플랫폼에 Cygwin 툴을 설치하면 다른 컴파일러에서 사용하는 환경 변수에 영향을 미칩니다.

Windows 플랫폼에서는 set 명령어를, Linux® 플랫폼에서는 setenv 명령어를 사용하여 시스템의 환경 변수 설정을 확인하십시오. 사용 중인 툴에 필요한 설정과 일치하는지 확인하십시오.

S-Function 블록 또는 사용자 지정 코드로 지정된 사용자 지정 코드에 오류가 있습니다. 예를 들어, 이 코드는 컴파일러가 찾을 수 없는 헤더 파일을 참조하고 있습니다.

문제의 원인을 파악하려면 모델에서 사용자 지정 코드를 제거한 다음, 디버깅을 수행하고 모델을 다시 빌드하십시오.

이 모델에는 현재 선택된 시스템 타깃 파일과 함께 사용하도록 의도되지 않은 블록(예: 장치 드라이버 블록)이 포함되어 있습니다.

시스템 타깃 파일별 블록을 제거하거나, 다른 시스템 타깃 파일과 함께 사용할 수 있도록 모델을 구성하십시오.

모델 빌드 과정에서 모델 참조 계층 구조를 기반으로 실행 프로그램을 생성할 때, 다음 조건이 모두 충족되면 데이터에 대한 정의되지 않은 참조와 관련된 링커 오류가 발생합니다:

  • Simulink.Signal와 같은 데이터 객체를 생성하여 신호, 상태 또는 파라미터 데이터를 표현합니다. 이 객체는 모델 참조 계층 구조에서 사용됩니다.

  • 데이터 객체에 사용자 지정 스토리지 클래스를 사용합니다. 사용자 지정 스토리지 클래스에는 Embedded Coder가 필요합니다.

  • 객체의 소유자를 데이터에 직접 접근하지 않는 모델로 설정합니다.

이 문제를 해결하려면 데이터 객체에서 Owner 속성을 지우십시오. 또는 소유자를 데이터에 직접 접근하는 모델로 설정할 수도 있습니다.

참고 항목

도움말 항목

외부 웹사이트