嵌入式平台 mips(arm)交叉编译 OpenBLAS 编译和安装

本文详细介绍了如何在Ubuntu16.04上使用mips-gcc472-glibc216交叉编译链,编译安装BLAS、LAPACK以及OpenBLAS。涉及步骤包括下载源文件、配置编译选项、解决编译错误,最终在指定目录生成库文件和头文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、开发环境

编译环境: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 两个文件夹,存放编译生成的头文件和库文件。

长按按识别

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值