Make と CMake は、CMakeLists.txt ファイルと Makefile ファイルをビルドするために使用されます。ほとんどの場合、CMakeLists.txt ファイルと Makefile ファイルの移行コンテンツは、データ型、プロセッサアーキテクチャ、コード生成オプションなどのコンパイルオプションを指定するために使用されます。このトピックでは、x86 プラットフォームから YiTian Elastic Compute Service (ECS) インスタンスに移行する際に、CMakeLists.txt ファイルと Makefile ファイルを変更する方法について説明します。
C および C++ を使用して -mabi=lp64 コンパイルオプションを追加する
-m64 は、x86 プラットフォームアプリケーションのコンパイルオプションであり、コンパイラにコードを 64 ビットとしてコンパイルするように指示します。このオプションは、YiTian インスタンスではサポートされていません。-m64 を -mabi=lp64 に変更する必要があります。
C および C++ を使用して -fsigned-char コンパイルオプションを強制的に追加する
デフォルトの char 型は、x86 アーキテクチャと ARM アーキテクチャでは異なります。デフォルトの char 型は、x86 アーキテクチャでは signed char です。デフォルトの char 型は、YiTian インスタンスでは unsigned char です。 x86 プラットフォームから YiTian インスタンスにコードを移行する場合は、char 型として signed char を指定する必要があります。
C および C++ を使用してプロセッサアーキテクチャオプションを指定する
YiTian インスタンスでコードをコンパイルする場合は、プロセッサアーキテクチャの march mtune mcpu オプションを -march=armv8-a+sve2 -mcpu=neoverse-n1 に変更する必要があります。このようにして、コンパイラは、YiTian インスタンスのマイクロアーキテクチャと命令セットに基づいて実行可能プログラムを生成し、パフォーマンスを向上させることができます。
例
Make および CMake ビルドファイルを x86 プラットフォームから YiTian インスタンスに移行する際のコードの変更例を以下に示します。
変更前のコード:
CFLAGS=-g3 -O2 -DNDEBUG -m64 -Wall -march=corei7変更後のコード:
# GNU Compiler Collection (GCC) 10 (Neoverse N1 に適しています)
CFLAGS=-g3 -O2 -DNDEBUG -mabi=lp64 -Wall -march=armv8-a+crc+sve2 -mcpu=neoverse-n1 -fsigned-char
# GCC 11 (Neoverse N2 に適しています)
CFLAGS=-g3 -O2 -DNDEBUG -mabi=lp64 -Wall -march=armv8-a+crc+sve2 -mcpu=neoverse-n2 -fsigned-char