arm平台常用工具和动态库编译
目录
- perf 交叉编译
- 交叉编译zlib
- 交叉编译 elfutils
- 交叉编译 perf
- perf 使用
- libconfig 交叉编译
- openssl 交叉编译
- libpcap 交叉编译
- 统信、龙芯等平台编译
- QT交叉编译
- 编译QT源码
- 编译QtCreator
- 编译ssl
- 编译libsrtp(2.3.0版本)
- 编译libyuv
- libopus编译
- libopenh264编译
- libusrsctp编译
- libsioclient编译
- 编译gdb
- x264编译
- ffmpeg编译
perf 交叉编译
perf 源码在linux内核源码里面,目录: /linux-4.19.232/tools/perf ,下载对应linux内核源码即可找到perf源码,使用源码交叉编译。
uname -r #查询arm内核版本
4.19.232
官网下载对应版本内核源码
https://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
https://mirror.bjtu.edu.cn/kernel/linux/kernel/
交叉编译工具链配置参考:
export CXX=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
export AR=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc-ar
export LD=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ld
export AS=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-as
export RANLIB=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ranlib
export ARCH=arm
perf交叉编译
perf基本特性依赖zlib和elfutils,elfutils编译生成的动态库用于符号解析,没有的话perf只能看到热点函数地址。
交叉编译zlib
下载zlib-1.2.3.tar.gz
http://www.zlib.net/
tar xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3/
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
mkdir build
./configure --prefix=/home/tom/perf/zlib-1.2.3/build
make -j4
make install
交叉编译 elfutils
下载 elfutils-0.170.tar.bz2
https://www.linuxfromscratch.org/blfs/view/8.1/general/elfutils.html
tar xvf elfutils-0.170.tar.bz2
cd elfutils-0.170/
mkdir build
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
export LDFLAGS=-L/home/tom/perf/zlib-1.2.3/build/lib
export CPPFLAGS=-I/home/tom/perf/zlib-1.2.3/build/include
export LIBS=-lz
./configure --host=arm-linux --prefix=/home/tom/perf/elfutils-0.170/build
make
报错解决:
报错: [-Werror=missing-attributes]
查找报错.c文件所在文件夹里的Makefile文件,删除里面的 -Werror ,例如:
$(if $($(*F)_no_Werror),,-Werror) \
# 修改为
$(if $($(*F)_no_Werror),,) \
报错: WARNING: TEXTREL found in ‘libdw.so’
找到对应文件夹里的Makefile文件
textrel_found = $(textrel_msg); exit 1
# 修改为
textrel_found = $(textrel_msg)
make install
生成动态库: libasm.so 、libdw.so、 libelf.so。
将build/lib目录生成的相关动态库拷贝到交叉编译工具链的libc下,将build/include目录下头文件拷贝到交叉编译工具链libc同级的include目录下。
交叉编译 perf
tar xvf linux-4.19.232.tar.gz
cd linux-4.19.232/tools/perf/
vim Makefile
# 文件最前面加入
export CXX=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
export AR=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc-ar
export LD=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ld
export AS=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-as
export RANLIB=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ranlib
# 该命令可能无效
export EXTLIBS =--static -lelf -lebl -L/home/tom/perf/zlib-1.2.3/build/lib -L/home/tom/perf/elfutils-0.170/build/lib
export ARCH=arm
export CROSS_COMPILE=arm-linux-
make
在当前目录生成可执行文件 perf ,拷贝到arm板子上运行, elfutils 编译生成的3个动态库也拷贝过去,使用export设置环境变量。
报错处理:
如果有把告警当成错误的情况,找到Makefile文件里的-Werror并注释掉。
Makefile.config,注释掉 CFLAGS += -Werror 和 CXXFLAGS += -Werror
multiple definition of runtime'; multiple definition of end’;
multiple definition of `start
报错,查看源码发现有两个.c文件(futex-hash.c,futex-lock-pi.c)定义了同名的结构体,把其中一个文件里的名字修改一下即可,比如runtime修改为runtime1.
undefined reference to arm_spe_pmu_default_config undefined reference to arm_spe_recording_init
明明有定义还是报这个错误,不是重要的函数,找到调用的地方注释掉。
arch/arm/tests/regs_load.S:58: Error: operand 1 must be an integer register – mov pc,lr
这个报错涉及到汇编,看不懂不要紧,修改构建文件不编译这个文件。
/linux-4.19.232/tools/perf/arch/arm/tests/Build,注释掉 libperf-y += regs_load.o
/linux-4.19.232/tools/perf/arch/arm64/tests/Build,注释掉 libperf-y += regs_load.o
还会报找不到 perf_regs_load ,在源码里把调用的地方注释掉。
perf看不到函数符号
make时会检测特性: Auto-detecting system features
符号解析由 libelf 功能完成,如果内核检出该功能为off状态,则perf看不到函数符号,只有地址。
上面编译 elfutils 成功后把库文件和头文件拷贝到工具链相应目录,如果检测不到,可能是没有拷贝正确。
内核检测特性是使用test测试文件,查看内核源码perf同级目录的build/feature文件夹,里面有大量测试文件,找到 test-libelf.make.output 文件,这里保存了检测 libelf 功能的日志,根据报错日志排查问题。
perf 使用
# 查看指定进程的热点函数,加选项-g生成热点函数调用栈
./perf top -p 3593
# 生成火焰图
./perf record -F 180 -p 3593 -g -- sleep 120
# 当前目录生成 perf.data 文件
libconfig 交叉编译
cd libconfig-1.7.3/
export CC=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc
export CXX=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++
export AR=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ar
export LD=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ld
export AS=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-as
export RANLIB=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ranlib
./configure --host=arm-linux-gnueabi --prefix=/opt/libconfig
make -j
sudo make install
openssl 交叉编译
下载
https://www.openssl.org/source/old/1.0.2/index.html
openssl-1.0.2k.tar.gz
tar xvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
mkdir install
sudo ./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-
make -j
make install
报错:libncurses.so.5: cannot open shared object file
sudo apt install libncurses5
libpcap 交叉编译
libpcap-1.10.1.tar.gz
tar xvf libpcap-1.10.1.tar.gz
cd libpcap-1.10.1
export CC=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc
export CXX=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++
export AR=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ar
export LD=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ld
export AS=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-as
export RANLIB=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ranlib
./configure --host=arm-linux-gnueabi --prefix=/opt/libpcap
报错:configure: error: Neither flex nor lex was found
sudo apt-get install flex
报错:configure: error: Neither bison, byacc, nor yacc was found
sudo apt-get update
sudo apt-get install bison
统信、龙芯等平台编译
QT交叉编译
编译QT源码
下载源码包:https://download.qt.io/archive/qt/
qt-everywhere-src-5.12.8.tar.xz
tar xvf qt-everywhere-src-5.12.8.tar.xz
cd /home/tom/work/src/qt-everywhere-src-5.12.8
#配置
./configure -prefix /home/tom/work/qt5.12.8 \
-confirm-license \
-release \
-opensource \
-v
#编译
make -j4
make install
cd /home/tom/work/qt5.12.8/bin
./qmake --version
编译QtCreator
下载源码包:https://download.qt.io/archive/qtcreator/4.11/4.11.2/
qt-creator-opensource-src-4.11.2.tar.gz
tar xvf qt-creator-opensource-src-4.11.2.tar.gzcd /home/tom/work/src/qt-creator-opensource-src-4.11.2/
export PATH=/home/tom/work/qt5.12.8/bin:$PATH
qmake -version
qmake
make -j4
cd bin
./qtcreator
报错解决
error: alsa/asoundlib.h: No such file or directory #include <alsa/asoundlib.h>
sudo apt-get install libasound2-devcast from ‘QTJSC::JSCell*’ to ‘int32_t’ {aka ‘int’} loses precision [-fpermissive]
qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h
把int32_t改为int64_t就可以了target architecture was not detected as supported by double-conversion
报错的文件为qtbase/src/3rdparty/double-conversion/include/double-conversion/utils.h
在defined(__mips__) ||后添加宏defined(__loongarch__)
编译ssl
git clone https://github.com/openssl/openssl.git
./config --prefix=/home/admin/tom/deplib/openssl/build
make -j4
make install
编译libsrtp(2.3.0版本)
git clone https://github.com/cisco/libsrtp.git
error: cannot guess build type; you must specify one
./configure --build=loongarch64-unknown-linux
make -j4
srtp_create创建失败,不支持部分加密选项,重新编译
./configure --build=loongarch64-unknown-linux --enable-openssl --with-openssl-dir=/home/admin/tom/deplib/openssl/build --prefix=/home/admin/tom/deplib/libsrtp-2.3.0/build
编译libyuv
git clone https://github.com/lemenkov/libyuv.git
cd libyuv/
sudo apt-get install cmake
mkdir arm_libyuv
mkdir build
cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/admin/tom/deplib/libyuv/arm_libyuv
make -j4
make install
libopus编译
http://www.opus-codec.org/
下载:opus-1.4.tar.gz
mkdir build
/configure --build=loongarch64-unknown-linux --prefix=/home/admin/tom/deplib/opus-1.4/build
make -j4
make install
libopenh264编译
git clone https://github.com/cisco/openh264.git
make OS=linux
libusrsctp编译
git clone https://github.com/sctplab/usrsctp.git
./bootstrap
mkdir build
./configure --build=loongarch64-unknown-linux --prefix=/home/admin/tom/deplib/usrsctp/build
make -j4
make install
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR
apt-get install libssl-dev
libsioclient编译
下载:
https://www.cnblogs.com/kn-zheng/p/17749207.html
https://github.com/socketio/socket.io-client-cpp/releases
socket.io-client-cpp-3.0.0.tar.gz
cd socket.io-client-cpp-3.0.0/lib
https://github.com/chriskohlhoff/asio/tags?after=asio-1-18-2
asio-asio-1-18-1.tar.gz
git clone https://github.com/Tencent/rapidjson.git
git clone https://github.com/zaphoyd/websocketpp.git
https://github.com/catchorg/Catch2/tags?after=v2.13.8
Catch2-2.13.4.tar.gz
cd ..
mkdir build
cd build
cmake ..
make -j4
编译gdb
sudo apt install gdb #如果能直接安装,不需要自己编译
wget http://ftp.gnu.org/gnu/gdb/gdb-12.1.tar.gz
cd gdb-12.1
mkdir build
cd build
../configure --prefix=/usr --target=loongarch64-unknown-linux-gnu
make -j4
sudo make install
WARNING: ‘makeinfo’ is missing on your system
sudo apt-get install texinfo
error: GMP is missing or unusable
sudo apt-get install libgmp-dev
x264编译
mkdir build
./configure --enable-static --enable-shared --prefix=/home/admin/tom/deplib_so/x264-snapshot-20191024-2245-stable/build --enable-pic
configure: error: cannot guess build type; you must specify one
修改config.guess,在mips:Linux:: | mips64:Linux::)前添加
loongarch*:Linux:*:*)echo ${UNAME_MACHINE}-unknown-linux-gnuexit ;;
ffmpeg编译
x264和ffmpeg编译过程参考:Qt+ubuntu+ffmpeg环境搭建,ffmpeg库的编译与调用
./configure --build=loongarch64-unknown-linux --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libx264 --prefix=/home/admin/tom/ffmpeg_so/ffmpeg-4.0.6/build –extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib相关文章:
arm平台常用工具和动态库编译
目录 perf 交叉编译交叉编译zlib交叉编译 elfutils交叉编译 perfperf 使用 libconfig 交叉编译openssl 交叉编译libpcap 交叉编译统信、龙芯等平台编译QT交叉编译编译QT源码编译QtCreator 编译ssl编译libsrtp(2.3.0版本)编译libyuvlibopus编译libopenh264编译libusrsctp编译lib…...
代码随想录训练营day45|115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离
115.不同的子序列 题目 dp[i][j]表示的是在以是s[j]为结尾的字符串中最多可以找到几种组成以t[i]为结尾的字符串的方式。 如果s[i]t[j], 1.利用第i个和第j个匹配,在j-1中寻找i-1. 2.不适用这两个进行匹配,在j-1中寻找i 如果s[i]!…...
椋鸟C++笔记#7:标准模板库STL初识
文章目录 标准模板库(Standard Template Library)STL的版本P.J.版RW版SGI版 STL的组成部分 萌新的学习笔记,写错了恳请斧正。 标准模板库(Standard Template Library) 标准模板库STL,是C标准库的一个非常重…...
滴滴嘀嗒,出行行业响起Robotaxi“倒计时”
文:互联网江湖 作者:刘致呈 前几天,各大出行平台的半年报陆续披露完毕,有的还在亏损,但也有人开始盈利。 如祺出行上市后的首份半年报营收10.37亿,同比增长13.6%。上半年运营亏损为2.56亿元,同…...
【MATLAB源码-第264期】基于matlab的跳频通信系统仿真,采用MSK调制方式,差分解调;输出误码率曲线和各节点波形图。
操作环境: MATLAB 2022a 1、算法描述 跳频通信系统是一种能够提高通信抗干扰能力的技术,它通过在传输过程中不断地改变载波频率来避开干扰或者窃听。在这套跳频通信系统中,我们采用了最小频移键控(MSK)作为调制方式…...
如何在多台电脑上同步 VSCode配置和插件
上一篇文章最新前端开发VSCode高效实用插件推荐清单总结了前端开发实用的插件,换电脑的时候怎么同步这些配置与插件呢,难道又要重新安装一遍吗😱 现在就来聊聊要在多台电脑上同步 VSCode配置和插件的几种方法: 方法一࿱…...
深度优先算法,广度优先算法,hill climbing,贪心搜索,A*算法,启发式搜索算法是什么,比起一般搜索法算法有什么区别
深度优先算法(Depth-First Search, DFS) 深度优先搜索是一种用于遍历或搜索树或图的算法。它沿着树的深度遍历树的节点,尽可能深地搜索树的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程…...
《python语言程序设计》2018版第8章第14题金融:信用卡号合法性 利用6.29题
一、之前6.29题我做的代码 这是用数字来进行分辨的 is_txt 4383576018402626 #合法def split_the_data_even(vis_n):current_a1 vis_n // 10000a_t1 vis_n % 10000# print("1th", a_t1)a_t2 current_a1 % 10000# print("2th", a_t2)current_a3 curre…...
QT 基础学习
1> 使用绘制事件完成钟表的绘制 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QDebug> #include <QTime> #include <QTimer> #include <QDateTime> //#include <string> #includ…...
【Gephi】可视化教程
此教程专供欣欣向荣及其舍友使用 文章目录 导入数据上色改变布局设置节点大小统计拓扑结构输出图形保存文件 导入数据 点击【文件】-【导入电子表格】 先选择csv格式的network 直接下一步 点击完成 【图的类型】改为“有向的” 点击确认 会弹出报错,直接clos…...
演化式原型开发-系统架构师(六十五)
1快速迭代式的原型开发能够有效控制成本,()是指开发过程中逐步改进和细化原型直到产生目标系统。 A可视化原型开发 B抛弃式原型开发 C演化式原型开发 D增量式原型开发 解析: 原型开发分为两大类:快速原型开发(抛弃…...
初识爬虫4
1.理解代理ip,正向代理和反向代理 2.代理ip分类,根据匿名度分类:透明,匿名,高匿 3.防止频繁向同一个域名发送请求被封ip,需使用代理ip # -*- coding: utf-8 -*- import requestsurl https://www.baidu.comproxies {…...
Golang | Leetcode Golang题解之第387题字符串中的第一个唯一字符
题目: 题解: type pair struct {ch bytepos int }func firstUniqChar(s string) int {n : len(s)pos : [26]int{}for i : range pos[:] {pos[i] n}q : []pair{}for i : range s {ch : s[i] - aif pos[ch] n {pos[ch] iq append(q, pair{ch, i})} e…...
【CanMV K230 AI视觉】 人体检测
【CanMV K230 AI视觉】 人体检测 人体检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 人体检测 人体检测是判断摄像头画面中有无出现人体,常用于人体数量检测,人流量监控以及安防监控等。…...
解决浏览器自动将http网址转https
删除浏览器自动使用https的方式 在浏览器地址栏输入:chrome://net-internals/#hsts PS:如果是edge浏览器可输入:edge://net-internals/#hsts 在Delete domain security policies搜索框下,输入要删除的域名,然后点击delete 解决方法&#…...
linux邮件配置
1. 非加密邮件配置 cat <<EOF > smtp.sh #!/bin/bash providerqq account3282941991 passwordzqdtygmmndsgb22i3ee echo "Waiting For A Moment..." rpm -qa sendmail &> /dev/null|| yum install sendmail -y >/dev/null echo " set from$…...
基于springboot+vue乒乓球预约管理系统
基于springbootvuemysql实现的乒乓球预约管理系统(源码数据库部署视频) ### 主要技术 SpringBoot、LayUI、Vue、MySQL ### 系统角色 用户、管理员 ### 系统功能 前台: 首页、乒乓球场、公告信息、留言反馈、个人中心 后台: …...
Linux 基础命令-文件权限与所有权
1. 文件权限概述 在Linux中,每个文件和目录都有与之关联的权限和所有权,来控制谁可以访问、修改或执行文件。文件权限与所有权可以防止未经授权的用户对文件进行访问或修改。 1.1 文件权限的组成 每个文件在Linux系统中都有三种类型的权限:…...
气压测试实验(用IIC)
I2C: 如果没有I2c这类总线,连接方法可能会如下图: 单片机所有的通讯协议,无非是建立在引脚(高低电平的变换高低电平持续的时间)这二者的组合上,i2c 多了一个clock线,负责为数据传输打节拍。 (i2…...
C++ lambda闭包消除类成员变量
原文链接:https://blog.csdn.net/qq_51470638/article/details/142151502 一、背景 在面向对象编程时,常常要添加类成员变量。 然而类成员一旦多了之后,也会带来干扰。 拿到一个类,一看成员变量好几十个,就问你怕不…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
