ARM32静态交叉编译并使用pidstat教程

一、前提准备

  1. 主机环境

    • 操作系统:Ubuntu/Debian 系统
    • 本教程以 sysstat-12.7.7 为例,可按需替换版本号。
  2. 交叉编译工具链

    bash 复制代码
    sudo apt-get update
    sudo apt-get install \
      gcc-arm-linux-gnueabihf \
      g++-arm-linux-gnueabihf \
      binutils-arm-linux-gnueabihf \
      libc6-dev-armhf-cross
  3. (可选)目标根文件系统 Sysroot

    如果有目标板的根文件系统,解压或挂载到 /opt/arm-sysroot,以便正确找到头文件和库。


二、下载源码

  1. 克隆官方仓库并切换到指定版本:

    bash 复制代码
    git clone https://github.com/sysstat/sysstat.git
    cd sysstat
    git checkout 12.7.7
  2. 若仓库中没有 configure 脚本,可先运行:

    bash 复制代码
    ./autogen.sh

三、配置交叉编译环境

在源码根目录下,导出交叉链工具和静态链接标志:

bash 复制代码
# 1. 指定交叉编译工具
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export AR=arm-linux-gnueabihf-ar
export AS=arm-linux-gnueabihf-as
export LD=arm-linux-gnueabihf-ld
export RANLIB=arm-linux-gnueabihf-ranlib
export STRIP=arm-linux-gnueabihf-strip

# 2. 指定 sysroot、优化与静态链接
export SYSROOT=/opt/arm-sysroot
export CFLAGS="--sysroot=$SYSROOT -O2 -static"
export LDFLAGS="--sysroot=$SYSROOT -static"

# 3. 运行 configure(prefix 可自定义)
./configure \
  --host=arm-linux-gnueabihf \
  --prefix=/opt/sysstat-arm32

说明

  • --host 指定目标架构,不能用 --enable-static,静态链接由 -static 控制。
  • 若无 sysroot,可去掉相关 --sysroot 参数,但需保证交叉链能找到库和头文件。

四、编译并打包

  1. 编译

    bash 复制代码
    make -j$(nproc)
  2. 安装到本地临时根目录

    bash 复制代码
    make DESTDIR=$HOME/sysstat-arm32-root install
  3. 打包

    bash 复制代码
    cd $HOME/sysstat-arm32-root/opt/sysstat-arm32
    tar czvf ~/pidstat-arm32-static.tar.gz bin/pidstat lib/ share/

五、部署到 ARM32 设备

  1. 拷贝文件

    bash 复制代码
    scp ~/pidstat-arm32-static.tar.gz user@arm-device:/tmp
    ssh user@arm-device
    cd /usr/local
    sudo tar xzvf /tmp/pidstat-arm32-static.tar.gz
    sudo ln -s /usr/local/bin/pidstat /usr/bin/pidstat
  2. 检查依赖

    bash 复制代码
    file /usr/local/bin/pidstat
    # 应显示 "statically linked"

六、使用示例

登录到 ARM32 设备后,运行:

bash 复制代码
# 每秒报告一次进程级 I/O 使用,连续 5 次
pidstat -d 1 5

# 查看内存与 CPU 使用
pidstat -r -u 2 3

若一切正常,即说明你已成功编译、部署并运行静态链接的 ARM32 版 pidstat

如有其它 sysstat 工具需求(如 iostatmpstat),同样放在 bin/ 目录下,可一并使用。祝编译顺利!

相关推荐
一位赵7 小时前
小练2 选择题
linux·运维·windows
代码游侠8 小时前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
Lw老王要学习8 小时前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
CRUD酱9 小时前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
zly35009 小时前
VMware vCenter Converter Standalone 转换Linux系统,出现两个磁盘的处理
linux·运维·服务器
Albert Edison9 小时前
【Python】函数
java·linux·python·pip
General_G9 小时前
Linux中的信号
linux·运维·服务器
诸神缄默不语10 小时前
当无法直接用apt instll时,Linux如何离线安装软件包(以make为例)
linux·运维·服务器
Sivan_Xin10 小时前
拒绝 If-Else 屎山:利用适配器模式(Adapter)构建第三方登录的“防腐层”实战
linux·python·适配器模式
learning-striving10 小时前
kali默认桌面Xfce切换为GNOME桌面
linux·运维·服务器·kali