Ubuntu中交叉编译armdillo库

news2024/9/25 22:54:11

        网上关于交叉编译armdillo库比较少,借鉴了一些但是在前几天编译时总是磕磕绊绊,于是写一个详细的编译过程。

        交叉编译armdillo库包含两个步骤:交叉编译依赖库和交叉编译armdillo库。armdillo官网介绍依赖库如下图所示:

        需要注意如果交叉编译armdillo库就不要在ubuntu中使用apt安装libopenblas-dev liblapack-dev libarpack2-dev libsuperlu-dev,这样会在编译armdillo时,自动找ubuntu路径下的依赖库,导致编译失败,当然修改CMakeLists.txt和CMakeCache.txt能够解决该问题。这里采用不安装依赖库的方式,这样在编译armdillo时,会找不到对应的依赖库,使得armdillo库顺利编译通过。

1、依赖库交叉编译

a)下载库文件

        路径如下:https://netlib.org/clapack/clapack-3.2.1-CMAKE.tgz

        然后解压,进入clapack-3.2.1-CMAKE路径,打开终端

b)创建make.inc

        输入:

cp make.inc.example make.inc

c)修改make.inc

        把里面的CC和LOADDER修改为交叉编译器。

改成:

注意:

/home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc为我ubuntu的交叉编译器路径,根据实际情况修改为对应交叉编译器。

d)修改clapack-3.2.1-CMAKE/F2CLIBS/libf2c/Makefile文件

ld -r -x -o $*.xxx $*.o修改为:

/home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ld -r -x -o $*.xxx $*.o

e)生成f2clib

输入:make f2clib

第一次会报错,再输入一次就会在F2CLIBS路径下生成libf2c.a

f)生成BLAS库

输入:make blaslib

会在clapack-3.2.1-CMAKE目录下生成:blas_LINUX.a

g)生成LAPACK库

输入: cd SRC

输入:make

会在clapack-3.2.1-CMAKE目录下生成lapack_LINUX.a

如果报错,可以退回clapack-3.2.1-CMAKE然后make lapacklib,然后再回到SRC,再次make

h)复制库文件到特定路径

$cp libf2c.a [CROSS-COMPILE LIBRARY PATH]/libf2c.a

$cp blas_XXXXX.a [CROSS-COMPILE LIBRARY PATH]/libblas.a

$cp lapack_XXXXX.a [CROSS-COMPILE LIBRARY PATH]/liblapack.a

2.编译armdillo

a)下载armdillo

Armadillo: C++ library for linear algebra & scientific computing - Download

b)修改CMakeLists.txt

set(ARMA_USE_LAPACK  false) 修改为

set(ARMA_USE_LAPACK  true)

c)直接cmake

输入:

cmake .

注意有个点

d)修改CMakeCache.txt

//CXX compiler

CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++

修改为:

CMAKE_CXX_COMPILER:FILEPATH=/home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

e)修改Cmakefile->armadillo.dir->link.txt

把G++修改为如下

/home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++  -fPIC  -O2  -Wl,--no-as-needed -shared -Wl,-soname,libarmadillo.so.12 -o libarmadillo.so.12.8.4 CMakeFiles/armadillo.dir/src/wrapper1.cpp.o CMakeFiles/armadillo.dir/src/wrapper2.cpp.o

f)修改test1路径下的CmakeLists.txt

将前面生成的依赖库,link进来

target_link_libraries(smoke_test PRIVATE /home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/usrlib/liblapack.a)

target_link_libraries(smoke_test PRIVATE /home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/usrlib/libblas.a)

target_link_libraries(smoke_test PRIVATE /home/fmsh/work/FMQL-Linux-SDK_20201022/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/usrlib/libf2c.a)

g)编译

输入:make

就可以在test1下生成smoke_test

h)拷贝库

从ubuntu中将libarmadillo.so.12.8.4拷贝出来,并重命名为libarmadillo.so.12,随后拷贝到到板卡系统中的usr/lib

i)运行

拷贝test1/smoke_test到板卡,运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01【MATLAB】最小二乘系统辨识

目录 1.系统辨识的定义及其分类 1.1 系统辨识的定义 1.2 系统辨识的分类 2.参数模型 3.系统辨识的步骤 一、最小二乘法(Least Squares Method)一般步骤 二、LSM原理及应用 三、LSM在控制系统建模中的应用 1.系统辨识的定义及其分类 1.1 系统辨识的…

Leetcode面试经典150题-201.数字范围按位与

给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。 示例 1: 输入:left 5, right 7 输出:4示例 2: 输入&…

Kolmogorov-Arnold——代替 MLP以提高模型的代表性和性能

前言 论文地址:https://arxiv.org/abs/2409.10594 源码地址:https://github.com/Adamdad/kat.git 传统的变压器模型使用多层感知器(MLP)来混合通道间的信息,而本文则使用了科尔莫哥罗德网络(KAN&#xff0…

微信第三方开发平台接入公众号整体技术方案

1.1 公众号简介 官网地址:微信公众平台 微信公众号 就像是你在微信里的一个“官方小号”,专门用来发布内容、和粉丝互动。用户可以关注你的公众号,收到你发布的消息,就像朋友圈那样。公众号还能提供很多实用功能,比如…

在 React 中模拟输入

需求 与 Bug 项目的 C# 桌面端使用 CefSharp 内嵌了一个三方网站,在外部实现了一个登录控件,外部登录后希望内嵌的三方网站自动登录,实现代码如下: browser.ExecuteScriptAsync($"document.getElementsByName(username)[0]…

s3c2440——ADC模数转换器,Linux驱动编程——u-boot

一、ADC 模拟:连续;数字:离散。 模拟信号一般指连续变化的电压值。转换的步骤:采样、量化。 ADC中soc电压转为数字信号的方法:逐次逼近法。 分辨率:nbit;表示一个电压比较器比较10次&#xf…

CoreDNS实现跨集群service解析实践

CoreDNS实现跨集群service解析实践 背景介绍使用条件实现方案 CoreDNS是一款使用Go语言实现的专为云原生应用而生的DNS服务器。本文介绍CoreDNS在特定实际场景下的一种进阶使用实践,也许能为其他也在使用CoreDNS做服务发现的同学提供一些启发和思考。 背景介绍 在…

三星推出990 EVO Plus固态硬盘,支持PCIe 4.0性能出色

容量高达4TB,提供增强的性能和能效。性能卓越,随机读写速度分别为为 1,050K IOPS 和 1,400K IOPS。 韩国——2024年9月25日—三星电子于今天宣布推出990 EVO Plus固态硬盘,为其固态硬盘产品线再添新成员。990 EVO Plus 支持 PCIe 4.0和最新的…

Icarus翼星求生教你使用服务器开服

1、购买后登录服务器(百度莱卡云游戏面板) 登录面板的信息在绿色的登陆面板按键下方,不是你的莱卡云账号 进入控制面板后会出现正在安装的界面,大约10分钟左右就能安装完成 2、创建端口 点击目录上的网络,再次页面下点…

kali-linux-2023.4 安装与配置

kali官网 作者:程序那点事儿 日期:2024/01/15 21:34 进入kali官网,点到下载页面 选择安装方式(本次私用虚拟机安装)。裸机安装是指,先要安装虚拟机(例如:CentOS7&#xff09…

【算法】贪心+堆排序实现大根堆及标准库容器类的融合使用

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

centos7安装Redis单机版

一、检查是否有GCC环境 gcc --version # 提示-bash: gcc: 未找到命令 说明没有gcc环境# 安装gcc环境 yum install gcc# 如果yum源报错 # 1.检查网络是否正常 ping www.baidu.com # 2.备份当前的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo…

IntraWeb制作汉堡菜单

IntraWeb开发web网站时如何制作手机页面? delphi源代码:示例两列布局带顶部汉堡菜单(兼容电脑与手机) 功能:交互式网页,两列布局,顶部汉堡菜单,点击汉堡图标关闭左侧栏,…

【NLP】基于“检测器-纠错器”中文文本纠错框架

前言 许多方法将中文拼写纠正(检测和纠正给定中文句子中的错误字符)视为序列标注任务,并在句子对上进行微调。一些方法使用错误检测器作为初步任务,然后将检测结果用于辅助后续的错误纠正过程。然而,现有方法在使用检…

RIFormer:保持你的视觉主干有效但移除令牌混合器

摘要 https://arxiv.org/pdf/2304.05659 本文研究了如何在去除其基本构建块中的标记混合器(token mixers)的同时保持视觉主干的有效性。标记混合器作为视觉变换器(Vision Transformers, ViTs)的自注意力机制,旨在实现…

java项目之新闻稿件管理系统(源码+文档)

项目简介 新闻稿件管理系统实现了以下功能: 新闻稿件管理系统的主要使用者管理员功能有个人中心,用户管理,记者管理,审批员管理,新闻分类管理,新闻信息管理,系统管理等。记者发布新闻信息&…

uniapp 整合 OpenLayer3

安装openLayer插件 命令行&#xff1a;npm install ol 安装sass插件 命令行&#xff1a;npm install -D sass 使用方法&#xff1a; *** *** <style scoped lang"scss"> </style> 安装ElementPlus 命令行&#xff1a;npm install element-plus -…

汽车零部件开发流程关键阶段

目录 1、定点阶段 1.1、定点前的准备工作 1.2、定点决策过程 1.3、定点后的工作交接 2、A样阶段&#xff1a;设计验证与基本功能实现 2.1、样件制作&#xff1a;从设计图纸到实物转化 2.2、功能测试&#xff1a;初步验证与性能评估 2.3、评估与优化&#xff1a;A样阶段…

Java数据库连接jdbc

Java数据库连接jdbc 导入java包 1、根目录&#xff0c;新建一个lib目录&#xff08;Dire&#xff09; 2、将jar包放入lib目录下 3、File -> Project Structure&#xff08;项目结构&#xff09; 4、Libraries-> ->java->找到项目的lib目录 5、Apply->OK使用JD…

下载2001年版英特尔开发手册与使用网易有道词典

本专栏的任务&#xff0c;是翻译2001年版英特尔开发手册的第3卷。上一节&#xff0c;我写了开篇语。本节&#xff0c;我是打算将这个版本的英特尔开发手册的下载方式公布出来。使得大家可以将其下载回去。如果你看的块的话&#xff0c;你可以自行翻译与学习。 一. 下载英特…