Main Content

컴파일러 및 링커 오류

MATLAB® Coder™에서 라이브러리, MEX 함수 또는 실행 파일을 생성하면 코드 생성기가 C/C++ 컴파일러를 호출하여 이진 아티팩트를 빌드합니다. 이 과정에서 빌드 오류가 발생할 수 있습니다. 이러한 오류는 컴파일 단계, 링크 단계 또는 빌드의 다른 단계에서 발생할 수 있습니다. 코드 생성 리포트의 빌드 로그 탭에서 컴파일 및 링크 오류와 경고를 볼 수 있습니다.

표시되는 특정 오류 메시지 및 경고는 플랫폼에 사용하는 컴파일러 및 툴체인에 따라 달라집니다. 현재 컴파일러를 보거나 다른 컴파일러를 선택하려면 명령 프롬프트에서 다음을 입력하십시오.

mex -setup

빌드 오류는 여러 다양한 이유로 발생할 수 있습니다. 오류를 진단하고 수정하려면 컴파일러 문서에 나열된 오류 메시지를 조사해야 할 수도 있습니다. 다음은 코드 생성 시 빌드 오류로 이어질 수 있는 일반적으로 발생하는 몇 가지 문제입니다.

메인 함수 지정 실패

C/C++ 실행 파일을 생성하려면 메인 함수를 지정해야 합니다. 메인 함수를 지정하지 않으면 빌드 오류가 발생합니다. 메인 함수는 별도의 메인 파일에 포함되어 있습니다. 코드 생성 시 MATLAB Coder는 샘플 메인 파일을 생성하지만 이 파일을 컴파일에 자동으로 사용하지는 않습니다. 샘플 메인 함수는 모의 입력값을 사용하여 생성 코드를 호출합니다. 현실적인 입력 및 출력 처리를 위해서는 샘플 메인을 수정하거나 자신만의 메인 함수를 생성해야 합니다.

메인 파일은 codegen 명령에 대한 명령줄 파라미터로, MATLAB Coder 앱에서 또는 구성 파라미터를 사용하여 지정할 수 있습니다. 자세한 내용과 예제는 다음을 참조하십시오.

코드 생성기가 생성된 샘플 메인 파일을 자동으로 사용하여 테스트 목적으로 실행 파일을 빌드하도록 하려면 구성 객체의 GenerateExampleMain 속성을 'GenerateCodeAndCompile'로 설정하면 됩니다. Incorporate Generated Code Using an Example Main Function 항목을 참조하십시오.

외부 코드 파일 지정 실패

코드가 coder.ceval에서 외부 C 함수를 사용하는 경우 이 함수가 포함된 외부 파일을 지정해야 합니다. 그러지 않으면 빌드 오류가 발생할 수 있습니다. 외부 파일은 codegen 명령에 대한 명령줄 파라미터로, MATLAB Coder 앱에서 또는 구성 파라미터를 사용하여 지정할 수 있습니다. 자세한 내용과 예제는 다음을 참조하십시오.

외부 코드로 인해 발생하는 오류

빌드 프로세스에 외부 코드를 추가할 경우 외부 코드의 자체 오류가 삽입될 수 있습니다. 다음과 같은 여러 방법을 통해 외부 코드를 추가할 수 있습니다.

  • 외부 헤더 파일에 정의된 coder.opaque를 사용하여 생성하는 외부 유형 정의.

  • 외부 헤더 파일에 정의된 coder.cstructname를 사용하여 생성하는 구조체 유형 정의.

  • coder.ceval을 사용하여 외부 코드 호출.

  • codegen 명령에 외부 빌드 파일 지정.

  • coder.cinclude 또는 coder.updateBuildInfo에 의한 외부 코드 파일 포함.

  • 앱, 사용자 지정 코드 탭 또는 코드 생성 구성 파라미터 CustomSourceCustomInclude를 통해 외부 코드 포함.

위 목록은 전체 목록이 아닙니다. 이러한 방법으로 인해 발생하는 오류를 해결하려면 외부 코드 문제를 검토하고 수정하거나 MATLAB 코드에서 외부 코드를 분리해야 합니다.

Windows의 경로 길이 제한으로 인해 발생하는 오류

Microsoft® Windows® 플랫폼에서 C/C++ 코드를 생성할 때 파일 이름 및 파일 경로의 길이가 Windows에서 허용하는 최댓값을 초과하면 오류가 발생할 수 있습니다. 이 경우 컴파일러가 필요한 파일이나 디렉터리를 찾을 수 없습니다. 이 문제를 해결하려면 다음 해결 방법 중 하나를 시도해 보십시오.

  • 프로젝트 폴더를 루트 디렉터리에 더 가깝게 이동하여 파일 경로를 줄입니다. Windows 플랫폼에서 루트 디렉터리는 백슬래시(\)로 표시됩니다.

  • Windows 명령 subst를 사용하여 프로젝트 폴더에 직접 매핑되는 가상 드라이브를 만듭니다. 예를 들어, 프로젝트 폴더의 경로가 C:\Users\user1\OneDrive - MyBuisness\Documents\Projects\My MATLAB Project인 경우 Windows 명령 프롬프트에 다음 명령을 입력하여 가상 드라이브 Z:를 프로젝트 폴더에 직접 매핑합니다.

    subst z: C:\Users\user1\OneDrive - MyBuisness\Documents\Projects\My MATLAB Project
    이 명령을 실행한 후에는 Z:를 입력하여 My MATLAB Project 폴더에 액세스할 수 있습니다. 자세한 내용은 Microsoft 문서 subst를 참조하십시오.

  • Windows 10, 버전 1607 이상의 플랫폼에서 긴 경로에 대한 지원을 활성화합니다. Microsoft 문서 Maximum Path Length Limitation을 참조하십시오.

Linux의 오래된 C/C++ 컴파일러 버전으로 인해 발생하는 오류

Linux® 플랫폼에서 MATLAB을 실행하는데 GCC 컴파일러가 MATLAB 인스턴스보다 훨씬 이전 버전인 경우 미리 컴파일된 라이브러리를 사용하는 특정 MathWorks® 툴박스 함수에 대한 코드 생성이 실패할 수 있습니다. 미리 컴파일된 라이브러리를 사용하는 툴박스 함수에는 영상 처리 함수(예: imfilter (Image Processing Toolbox), bwpack (Image Processing Toolbox), regionprops (Image Processing Toolbox))가 포함되며, 이에 국한되지 않습니다.

이 문제를 해결하려면 Linux 플랫폼에서 GCC 컴파일러를 업그레이드하여 glibc 및/또는 libstdc++ 라이브러리를 업데이트하십시오.

관련 항목

외부 웹사이트