工程编译
在udf_workspace/01_udf_add目录下创建build和release目录:
编译完成后在workspace/udf_add/release目录下生成编译成功的so。
- 创建build目录。
mkdir -p build
- 创建release目录。
mkdir -p release
- 进入build目录。
cd build
- 工程编译
- 非交叉编译场景(开发环境和运行环境的架构一致)下示例如下:编译x86_64类型的so,指定target lib为libadd.so,编译工具为g++。
cmake .. -DTOOLCHAIN=g++ -DRELEASE_DIR=../release -DRESOURCE_TYPE=X86 -DUDF_TARGET_LIB=add && make
- -DTOOLCHAIN:编译工具名称。比如g++。
- -DRELEASE_DIR:编译完成后,目标文件存放路径。
- -DRESOURCE_TYPE:编译的资源类型,可以取值:X86或者Aarch或者Ascend。
- X86:目标so需要部署在X86架构的Host时,配置为X86。
- Aarch:目标so需要部署在Aarch的Host时,配置为Aarch。
- Ascend:目标so需要部署在Device时,配置为Ascend。
- -DUDF_TARGET_LIB:编译完成后,目标so的名称。比如,设置为add,实际生成libadd.so。
- 交叉编译(开发环境是x86_64,运行环境是aarch64)场景下,编译Ascend类型的so, 指定target lib为libadd.so,编译工具为${INSTALL_DIR}/toolkit/toolchain/hcc/bin/aarch64-target-linux-gnu-g++。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。例如,若安装的Ascend-cann-toolkit软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。
示例如下:
cmake .. -DTOOLCHAIN=${INSTALL_DIR}/toolkit/toolchain/hcc/bin/aarch64-target-linux-gnu-g++ -DRELEASE_DIR=../release -DRESOURCE_TYPE=Ascend -DUDF_TARGET_LIB=add && make
- 非交叉编译场景(开发环境和运行环境的架构一致)下示例如下:编译x86_64类型的so,指定target lib为libadd.so,编译工具为g++。
父主题: UDF开发