주요 콘텐츠

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

Windows Subsystem for Linux에서 코드 빌드하기

Windows® 컴퓨터에 Windows Subsystem for Linux(WSL)를 설치하면, CMake 툴체인 정의를 사용하여 WSL 환경에서 생성된 코드를 빌드할 수 있습니다. 예를 들어, 다음을 수행할 수 있습니다.

  • Linux® 컴퓨터용으로 생성된 코드를 크로스 컴파일합니다.

  • Linux가 지원하는 툴체인을 사용하여 타깃 하드웨어용 생성 코드를 빌드하십시오.

  • Embedded Coder® Support Package for Linux Applications를 사용하여 AUTOSAR Adaptive 또는 DDS Blockset 코드를 빌드하십시오.

  • Windows 보호 모델에서 생성된 코드를 Linux 컴퓨터용으로 크로스 컴파일합니다.

빌드 프로세스에서는 다음을 지정할 수 있습니다:

  • 사전 정의된 툴체인 GNU gcc/g++ | CMake/gmake (Windows Subsystem for Linux)

  • target 네임스페이스를 사용하여 생성하는 사용자 지정 툴체인 정의

환경 설정

코드 생성을 위해 생성된 코드를 빌드하기 전에 다음 단계를 수행해야 합니다:

  1. Windows 컴퓨터에 Windows Subsystem for Linux(WSL) 서브시스템을 설치하세요.

  2. WSL 환경에서 Linux 배포판(예: Debian®)을 설치하십시오.

  3. Linux 배포판에서 CMake와 필요한 빌드 툴(예: GNU® Make, GCC 및 G++ 컴파일러)을 설치하십시오.

  4. WSL 환경 내에서 Windows 파일 시스템에 있는 코드 생성 및 MATLAB® 설치 폴더에 접근할 수 있는지 확인하십시오. DrvFs 파일 시스템 플러그인을 사용하여 마운트 지점을 생성함으로써 해당 폴더에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 WSL 2에서 Linux 디스크 마운트하기를 참조하세요.

    예를 들어, 두 폴더가 모두 C: 드라이브에 있는 경우 다음 사항을 확인하십시오:

    • WSL 파일 시스템의 /mnt/c 는 Windows 파일 시스템에 있는 C: 드라이브를 가리킵니다.

    • 마운트 지점에 읽기/쓰기 권한이 있습니다.

    • WSL 환경 내의 기본 사용자가 해당 마운트 지점의 소유자입니다.

WSL에서 사전 정의된 툴체인 지정하기

생성된 코드를 빌드하기 전에, 구성 파라미터 대화 상자에서:

  1. 장치 공급업체Intel로, 장치 유형x86-64 (Linux 64)로 설정하십시오.

  2. 툴체인GNU gcc/g++ | CMake/gmake (Windows Subsystem for Linux)로 설정하십시오.

모델(Ctrl+B)을 빌드할 때, 빌드 프로세스는 지정된 툴체인을 사용하여 생성된 코드를 빌드합니다.

WSL용 사용자 지정 툴체인 정의 만들기

이 명령줄 예제는 다음을 전제로 합니다:

  • WSL 환경에 Debian Linux 배포판이 설치되었습니다.

  • Debian Linux 배포판에는 CMake, Ninja 빌드 시스템 및 AArch64 크로스 컴파일러가 설치되어 있습니다.

WSL에서 실행되는 CMake 기반 툴체인을 정의합니다.

aarchTc = target.create('Toolchain', ...
    'Name', 'GNU gcc/g++ aarch64 | CMake/Ninja', ...
    'MakeToolType', 'CMake', ...
    'Generator', 'Ninja', ...
    'RunsOn', target.ExecutionContext.WSL);
aarchTc.HostOperatingSystemSupport = target.HostOperatingSystemSupport.WindowsOnly;

사용자 지정을 통해 크로스 컴파일러를 사용하도록 툴체인을 구성하십시오.

aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_C_COMPILER', ...
              'Value', 'aarch64-linux-gnu-gcc');
aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_CXX_COMPILER', ...
              'Value', 'aarch64-linux-gnu-g++');
aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_SYSTEM_NAME', ...
              'Value', 'Linux');
aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_FIND_ROOT_PATH', ...
              'Value', '/usr/aarch64-linux-gnu');
aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_FIND_ROOT_PATH_MODE_PROGRAM', ...
              'Value', 'NEVER');
aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_FIND_ROOT_PATH_MODE_LIBRARY', ...
              'Value', 'ONLY');
aarchTc.Builder.CommandLineCacheEntries(end+1) = target.create('CMakeCacheEntry', ...
              'Name', 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE', ...
              'Value', 'ONLY');

툴체인 정의를 내부 데이터베이스에 추가합니다.

target.add(aarchTc)

모델 구성에서 툴체인 정의를 지정하십시오.

modelName = 'myModel';
load_system(modelName);
set_param(modelName, ...
          'ProdHWDeviceType', 'ARM Compatible->ARM 64-bit (LP64)');
set_param(modelName, ...
          'Toolchain', aarchTc.Name);

예를 들어, slbuild(modelName)를 실행하여 모델을 빌드할 때, 빌드 프로세스는 사용자 지정 툴체인을 사용하여 생성된 코드를 빌드합니다.

내부 데이터베이스에서 사용자 지정 툴체인 정의를 삭제하려면 다음 명령어를 입력하십시오.

customToolChainDef = target.get('Toolchain', ...
                                'GNU gcc/g++ aarch64 | CMake/Ninja');
target.remove(customToolChainDef);

참고 항목

| | | | | | |

도움말 항목

외부 웹사이트