当前位置: 首页 > news >正文

【Linux】NET9运行时移植到低版本GLIBC的Linux纯内核板卡上

背景介绍

自制了一块Linux板卡(基于全志T113i)
厂家给的SDK和根文件系统能够提供的GLIBC的版本比较低 V2.25/GCC 7.3.1
在这里插入图片描述
这个版本是无法运行dotnet以及dotnet生成的AOT应用的
我用另一块同Cortex-A7的板子运行dotnet的报错
在这里插入图片描述
版本不够,运行不了
而我的板子是根本就识别不了这个可执行文件
在这里插入图片描述
查询各种资料得知
目前net9的运行条件:
在这里插入图片描述
版本确实不够,ARM32必须要GLIBC 2.35以上才可以或者安装Ubuntu22.04才行
结合我自己的情况

  1. 板卡SDK开发虚拟机环境,目前我不熟悉怎么升级其自带GCC编译器和更换基于Ubuntu22.04的根文件系统,这个方案暂时不行
  2. 板卡目前是基于buildroot的根文件系统,没有包管理器,也没办法在线安装
  3. 直接替换板卡目前的GLIBC会有很多很多不可知的问题,譬如无法启动等等麻烦出现

基于这些,我只能是各种找方法来变相的找方法:
然后,我发现了一个很棒的方法: patchelf
参考连接1
我去gayhub下载了这个patchelf的arm版本,并且也下载了源码,使用厂家给的交叉编译器编译了交叉编译版本,以备不时之需。
然后,我将我目前用于编译ARM32位平台的DOTNET开发环境-树莓派3B的编译器arm-linux-gnueabihf的lib文件夹下的文件全部复制导出到我自制的板卡上
然后经过我的反复测试,事情出现转机,接近可以运行了
[NET9_TEST是我的NET9 AOT原生编译的产物]

patchelf --set-rpath [来自树莓派3B的arm-linux-gnueabihf的lib文件夹的绝对路径] ./NET9_TEST
patchelf --set-interpreter [来自树莓派3B的arm-linux-gnueabihf的lib文件夹的绝对路径]/ld-linux-armhf.so.3 ./NET9_TEST

之后,他居然已经能够运行了,虽然有问题
在这里插入图片描述
这个提示是要我装这个libicu这个库
我在树莓派上装好,然后拷贝过来
放到arm-linux-gnueabihf的lib文件夹–测试失败
放到/lib文件夹下,测试失败
直接在NET9工程里加这个库,测试失败 链接


最后参考这个帖子
修改环境变量,关掉这个国际化功能,国际化关掉的影响,可以看这个链接
翻译了下
在这里插入图片描述

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1

运行成功
在这里插入图片描述

同样的,dotnet运行时,也可以采取同样的方式来做,也可以运行了

patchelf --set-rpath /run/media/mmcblk1p1/Rp3-Gcc/arm-linux-gnueabihf/ ./dotnet
patchelf --set-interpreter /run/media/mmcblk1p1/Rp3-Gcc/arm-linux-gnueabihf/ld-linux-armhf.so.3 ./dotnet

在这里插入图片描述
这个patchelf只需要对可执行文件执行一次就可以了,之后只要可执行文件没有变更应该就不要重复执行了
目前这个方式,就差这个国际化还不够完美,看看后续能不能解决这个libicu找不到的问题就很完美了

相关文章:

【Linux】NET9运行时移植到低版本GLIBC的Linux纯内核板卡上

背景介绍 自制了一块Linux板卡(基于全志T113i) 厂家给的SDK和根文件系统能够提供的GLIBC的版本比较低 V2.25/GCC 7.3.1 这个版本是无法运行dotnet以及dotnet生成的AOT应用的 我用另一块同Cortex-A7的板子运行dotnet的报错 版本不够,运行不了 而我的板子是根本就识…...

深入浅出支持向量机(SVM)

1. 引言 支持向量机(SVM, Support Vector Machine)是一种常见的监督学习算法,广泛应用于分类、回归和异常检测等任务。自1990年代初期由Vapnik等人提出以来,SVM已成为机器学习领域的核心方法之一,尤其在模式识别、文本…...

Vue脚手架相关记录

脚手架 安装与配置 安装node node -> 16.20.2 切换淘宝镜像 npm install -g cnpm -registryhttp://registry.npm.taobao.orgnpm config set registry http://registry.npm.taobao.org/使用了第二个,下一步才有用 安装vue npm install -g vue/clivscode中不给运行vue解…...

基于Docker的Minio分布式集群实践

目录 1. 说明 2. 配置表 3. 步骤 3.1 放行服务端口 3.2 docker-compose 编排 4. 入口反向代理与负载均衡配置 4.1 api入口 4.2 管理入口 5. 用例 6. 参考 1. 说明 以多节点的Docker容器方式实现minio存储集群,并配以nginx反向代理及负载均衡作为访问入口。…...

Scala 的迭代器

迭代器定义:迭代器不是一种集合,它是一种用于访问集合的方法。 迭代器需要通过集合对应的迭代器调用迭代器的方法来访问。 支持函数式编程风格,便于链式操作。 创建一个迭代器,相关代码如下: object Test {def mai…...

vue实现文件流形式的导出下载

文章目录 Vue 项目中下载返回的文件流操作步骤一、使用 Axios 请求文件流数据二、设置响应类型为 ‘blob’三、创建下载链接并触发下载四、在 Vue 组件中集成下载功能五、解释与实例说明1、使用 Axios 请求文件流数据:设置响应类型为 blob:创建下载链接并…...

【DIY飞控板PX4移植】深入理解NuttX下PX4串口配置:ttyS设备编号与USARTUART对应关系解析

深入理解NuttX下PX4串口配置:ttyS设备编号与USART&UART对应关系解析 引言问题描述原因分析结论 引言 在嵌入式系统开发中,串口(USART/UART)的配置是一个常见但关键的任务。对于使用 NuttX 作为底层操作系统的飞控系统&#x…...

【报错解决】vsvars32.bat 不是内部或外部命令,也不是可运行的程序或批处理文件

报错信息: 背景问题:Boost提示 “cl” 不是内部或外部命令,也不是可运行的程序或批处理文件时,   按照这篇博客的方法【传送】添加了环境变量后,仍然报错: 报错原因: vsvars32.bat 的路径不正…...

CTFshow-文件上传(Web151-170)

CTFshow-文件上传(Web151-170) 参考了CTF show 文件上传篇(web151-170,看这一篇就够啦)-CSDN博客 Web151 要求png,然后上传带有一句话木马的a.png,burp抓包后改后缀为a.php,然后蚁剑连接,找fl…...

深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 yolov5网络结构比较复杂,上次我们简要介绍了yolov5网络模块,并且复现了C3模块,深度学习基础–yolov5网络结构简介&a…...

操作系统(16)I/O软件

前言 操作系统I/O软件是负责管理和控制计算机系统与外围设备(例如键盘、鼠标、打印机、存储设备等)之间交互的软件。 一、I/O软件的定义与功能 定义:I/O软件,也称为输入/输出软件,是计算机系统中用于管理和控制设备与主…...

leetcode437.路径总和III

标签:前缀和 问题:给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下…...

WebGPU、WebGL 和 OpenGL/Vulkan对比分析

WebGPU、WebGL 和 OpenGL/Vulkan 都是用于图形渲染和计算的图形API,但它们的设计理念、功能和适用场景有所不同。以下是它们的总结和对比分析: 1. WebGPU WebGPU 是一个新的、现代化的图形和计算API,设计目的是为Web平台提供更接近硬件的性…...

不可重入锁与死锁

不可重入锁确实可能导致死锁,特别是在同一线程尝试多次获取同一把锁时。如果锁是不可重入的,那么线程在第二次尝试获取锁时会永远阻塞,从而导致死锁。 不可重入锁与死锁的关系 不可重入锁不允许同一个线程多次获取同一把锁。在以下情况下&am…...

XXE-Lab靶场漏洞复现

1.尝试登录 输入账号admin/密码admin进行登录&#xff0c;并未有页面进行跳转 2.尝试抓包分析请求包数据 我们可以发现页面中存在xml请求&#xff0c;我们就可以构造我们的xml请求语句来获取想要的数据 3.构造语句 <?xml version"1.0" ?> <!DOCTYPE fo…...

从Windows到Linux:跨平台数据库备份与还原

数据库的备份与还原 目录 引言备份 2.1 备份所有数据库2.2 备份单个数据库2.3 备份多个指定数据库 传输备份文件还原 4.1 还原所有数据库4.2 还原单个数据库4.3 还原多个指定数据库 注意事项拓展 1. 引言 在不同的操作系统间进行数据库迁移时&#xff0c;命令行工具是我们的…...

upload-labs

Win平台靶场 靶场2 教程 教程 教程 pass-01 bash 本pass在客户端使用js对不合法图片进行检查&#xff01;前端绕过, 禁用前端js代码, 或者上传图片, 抓包改后缀为 php , 后端没有校验 bash POST /Pass-01/index.php HTTP/1.1 Host: 47.122.3.214:8889 Content-Length: 49…...

【西门子PLC.博途】——面向对象编程及输入输出映射FC块

当我们做面向对象编程的时候&#xff0c;需要用到输入输出的映射。这样建立的变量就能够被复用&#xff0c;从而最大化利用了我们建立的udt对象。 下面就来讲讲映射是什么。 从本质上来说&#xff0c;映射就是拿实际物理对象对应程序虚拟对象&#xff0c;假设程序对象是I0.0&…...

牛客周赛 Round 72 题解

本次牛客最后一个线段树之前我也没碰到过&#xff0c;等后续复习到线段树再把那个题当例题发出来 小红的01串&#xff08;一&#xff09; 思路&#xff1a;正常模拟&#xff0c;从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…...

Flux Tools 结构简析

Flux Tools 结构简析 BFL 这次一共发布了 Canny、Depth、Redux、Fill 四个 Tools 模型系列&#xff0c;分别对应我们熟悉的 ControlNets、Image Variation&#xff08;IP Adapter&#xff09;和 Inpainting 三种图片条件控制方法。虽然实现功能是相同的&#xff0c;但是其具体…...

0 前言

ArCS作为一个基于Rust的CAD&#xff08;计算机辅助设计&#xff09;开源系统&#xff0c;尽管已经有四年未更新&#xff0c;但其设计理念和技术实现仍然具有很高的学习和参考价值。以下是对ArCS项目的进一步分析和解读&#xff1a; 一、项目亮点与技术优势 高效与安全的Rust语…...

ARM嵌入式学习--第八天(PWM)

PWM -PWM介绍 PWM&#xff08;pulse Width Modulation&#xff09;简称脉宽调制&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术&#xff0c;广泛应用在测量&#xff0c;通信&#xff0c;工控等方面 PWM的频率 是指在1秒钟内&#xff0c;信号从…...

遇到“REMOTE HOST IDENTIFICATION HAS CHANGED!”(远程主机识别已更改)的警告

连接虚拟机时提示报错&#xff1a; [insocoperhq-soc-cap-raw3 ~]$ ssh root10.99.141.104WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-midd…...

vue3前端组件库的搭建与发布(一)

前言&#xff1a; 最近在做公司项目中&#xff0c;有这么一件事情&#xff0c;很是头疼&#xff0c;就是同一套代码&#xff0c;不同项目&#xff0c;要改相同bug&#xff0c;改好多遍&#xff0c;改的都想吐&#xff0c;于是就想做一个组件库&#xff0c;这样更新一下就全都可…...

COMSOL快捷键及内置函数

文章目录 COMSOL快捷键使用COMSOL算子求最大值和最小值COMSOL内置函数3.1 解析函数3.2 插值函数3.3 分段函数3.4 高斯脉冲函数3.5 斜坡函数3.6 矩形函数3.7 波形函数3.8 随机函数3.9 Matlab函数3.10 SWITCH函数 COMSOL快捷键 Ctrl&#xff0b;/ 可快速打开预定义的物理量列表。…...

HUAWEI-eNSP交换机链路聚合(手动负载分担模式)

配置思路:HUAWEI交换机链路聚合有LACP模式跟手动负载分担模式,本文主打手动负载分担模式:首先交换机-PC之间划分基本vlan,交换机-交换机之间创建链路聚合组,划分端口至链路聚合分组(缺省模式为手动负载分担模式)。结果验证要求同vlan可以ping通,关闭某个聚合端口后仍可…...

番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !

前言:Hello大家好,我是小哥谈。Hyper-YOLO,该方法融合了超图计算以捕捉视觉特征之间复杂的高阶关联。传统的YOLO模型虽然功能强大,但其颈部设计存在局限性,限制了跨层特征的融合以及高阶特征关系的利用。Hyper-YOLO在骨干和颈部的联合增强下,成为一个突破性的架构。在COC…...

【MATLAB第109期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数

【MATLAB第108期】基于MATLAB的带置信区间的RSA区域敏感性分析方法&#xff0c;无目标函数 参考第64期文章【MATLAB第64期】【保姆级教程】基于MATLAB的SOBOL全局敏感性分析模型运用&#xff08;含无目标函数&#xff0c;考虑代理模型&#xff09; 创新点&#xff1a; 1、采…...

Bootstrap 表格

Bootstrap 表格 引言 Bootstrap 是一个流行的前端框架&#xff0c;它提供了一套丰富的工具和组件&#xff0c;用于快速开发响应式和移动设备优先的网页。在本文中&#xff0c;我们将重点讨论 Bootstrap 中的表格组件&#xff0c;包括其基本结构、样式以及如何使用 Bootstrap …...

【论文阅读】Computing the Testing Error without a Testing Set

https://blog.csdn.net/qq_40021158/article/details/109485216 可以使用测试集来估计训练集和测试集之间的性能差距&#xff0c;但是要避免过度拟合测试数据几乎是不可能的。 使用隔离的测试集可能会解决此问题&#xff0c;但这需要不断更新数据集&#xff0c;这是一项非常昂贵…...