컴파일러 및 링커 오류
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
에 의한 외부 코드 파일 포함.앱, 사용자 지정 코드 탭 또는 코드 생성 구성 파라미터
CustomSource
및CustomInclude
를 통해 외부 코드 포함.
위 목록은 전체 목록이 아닙니다. 이러한 방법으로 인해 발생하는 오류를 해결하려면 외부 코드 문제를 검토하고 수정하거나 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++
라이브러리를 업데이트하십시오.