一、开发环境
编译环境:Ubuntu16.04 ( x64 )
交叉编译链:mips-gcc472-glibc216
BLAS 库: blas( 3.8.0 )
LAPSCK 库: lapack( 3.8.0 )
交叉编译工具:CMake ( 3.5.1 ),若未安装,请在终端执行:
sudo apt-get install cmakesudo apt-get install cmake-qt-gui
二、安装 BLAS
2.1 下载源文件 BLAS 并解压
wget /blas/blas.tgztar -xvf blas.tgz
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 /lapack/lapack-3.8.0.tar.gztar -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/INSTALLcp make.inc.gfortran ../ls cd ..
重命名 make.inc.gfortran 为 make.inc
mv make.inc.gfortran make.inc
修改 lapack-3.8.0/Makefile:
#lib: lapacklib tmgliblib: 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 /xianyi/OpenBLAS.git
4.2 编译与安装
进入 OpenBLAS 根目录,执行编译:
cd /home/yoko-zsb/OpenBLASmake 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= -mtune=p5600 $(MSA_FLAGS)#FCOMMON_OPT += -mips32r5 -mnan= -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 = -mips32r5TARGET_FLAGS = -mips32r2endif
对应的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 两个文件夹,存放编译生成的头文件和库文件。
公众号准备了200G+共享资源,包括office 软件+学习视频,AutoCAD,PS CS6软件+视频,python、小程序、C语言、WEB、Javascript开发学习视频、机器学习等资源。只需关注公众号Slater,回复关键字即可获取(失效请联系我)。