一、开发环境

编译环境:Ubuntu16.04 ( x64 )
交叉编译链:mips-gcc472-glibc216
BLAS 库: blas( 3.8.0 )
LAPSCK 库: lapack( 3.8.0 )
交叉编译工具:CMake ( 3.5.1 ),若未安装,请在终端执行:

sudo apt-get install cmake
sudo apt-get install cmake-qt-gui

二、安装 BLAS

2.1 下载源文件 BLAS 并解压

wget http://www.netlib.org/blas/blas.tgz
tar -xvf blas.tgz

 blas 解压结果

2.2 编译与安装 BLAS

编译所有的 .f 文件,生成 .o文件

gfortran -c  -O3 *.f 

链接所有的 .o文件,生成 .a 文件

ar rv libblas.a *.o 

将库文件复制到系统库目录

su cp libblas.a /usr/local/lib 

编译并复制编译好的 blas

三、安装 LAPSCK

3.1 安装 gfortran

sudo apt-get install gfortran

3.2 下载 LAPSCK 源文件并解压

wget http://www.netlib.org/lapack/lapack-3.8.0.tar.gz
tar -xvf lapack-3.8.0.tar.gz lapack-3.8.0

3.3 安装 LAPSCK

进入** lapack-3.8.0** 文件夹,然后根据平台的特点,将 INSTALL 目录下对应的 **make.inc.XXX ** 复制一份到 lapack-3.8.0根目录下

这里以 /home/yoko-zsb/lapack-3.8.0/INSTALL为例(注意调整为解压后 lapack-3.8.0/INSTALL 对应文件所在目录

cd  /home/yoko-zsb/lapack-3.8.0/INSTALL
cp make.inc.gfortran ../
ls 
cd ..


重命名 make.inc.gfortran 为 make.inc

mv make.inc.gfortran make.inc

修改 lapack-3.8.0/Makefile:

#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib


编译所有的 lapack 文件

cd /home/yoko-zsb/lapack-3.8.0

编译 lapacke

make 

在这里插入图片描述
将 lapacke 的头文件复制到系统头文件目录

cp /home/yoko-zsb/lapack-3.8.0/LAPACKE/include/*.h /usr/local/include 

返回到 lapack-3.8.0 目录

cd .. 

将生成的所有库文件复制到系统库目录

cp *.a /usr/local/lib 

编译过程中的 znep.out‘ failed” error 错误参考LAPACK make fails: “recipe for target ‘znep.out‘ failed” error

四、OpenBLAS编译和安装

4.1下载 OpenBLAS 源文件

git clone https://github.com/xianyi/OpenBLAS.git

在这里插入图片描述

4.2 编译与安装

进入 OpenBLAS 根目录,执行编译:

cd  /home/yoko-zsb/OpenBLAS

make TARGET=MIPS24K HOSTCC=gcc BINARY=32 CC=/opt/ingenic_compiler/mips-gcc472-glibc216/bin/mips-linux-gnu-gcc FC=/opt/ingenic_compiler/mips-gcc472-glibc216/bin/mips-linux-gnu-gfortran

其中 指交叉边编译器所在路径:/opt/ingenic_compiler/mips-gcc472-glibc216/bin/(注意替换)

4.2.1 若编译 OpenBLAS 的 arm 库文件,则调整为:

make TARGET= ARMV7 HOSTCC=gcc BINARY=32 CC=arm-linux-gnueabihf-gcc FC=arm-linux-gnueabihf-gfortran

其中,TARGET:表示目标处理器支持 MIPS24K 、MIPS1004K和P5600(arm7) ; BINARY:表示目标系统为32位; CC:表示制定编译器

4.2.2 当 TARGET 设置为:P5600 时,需要做如下修改

修改 Makefile.system 文件,终端执行:

sudo gedit  Makefile.system

修改的具体内容如下:

ifeq ($(CORE), P5600)
#CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600  $(MSA_FLAGS)
#FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600  $(MSA_FLAGS)
CCOMMON_OPT += -mips32r2 -mtune=mips32r2 -mhard-float $(MSA_FLAGS)
FCOMMON_OPT += -mips32r2 -mtune=mips32r2 -mhard-float $(MSA_FLAGS)
endif

修改 Makefile.prebuild 文件

sudo gedit  Makefile.prebuild

修改的具体内容如下:

ifeq ($(TARGET), P5600)
#TARGET_FLAGS = -mips32r5
TARGET_FLAGS = -mips32r2
endif

对应的make命令参数设置为:

make HOSTCC=gcc BINARY=32 BINARY32=1 CC=/opt/ingenic_compiler/mips-gcc472-glibc216/bin/mips-linux-gnu-gcc FC=/opt/ingenic_compiler/mips-gcc472-glibc216/bin/mips-linux-gnu-gfortran TARGET=P5600  CFLAGS="-EL" FFLAGS=$CFLAGS LDFLAGS=$CFLAGS ONLY_CBLAS=1 USE_THREAD=0

在 OpenBLAS 根目录新建编译库存储文件夹 install

mkdir install

根目录执行命令打包库文件,将库文件和头文件全部拷贝到指定的 PREFIX 路径下

sudo make PREFIX=/home/yoko-zsb/OpenBLAS/install install

其中,PREFIX=/home/yoko-zsb/OpenBLAS/install(注意替换成新建install 的路径

4.3 编译结果

在 /home/yoko-zsb/OpenBLAS/install 路径下会出现 include、lib 两个文件夹,存放编译生成的头文件和库文件。

长按按识别

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐