arm | lrzsz移植记录

devtools/2025/3/1 14:20:34/

1 我的使用场景

开发板无网络, 无奈只得用U盘拷贝文件
文件不大, 每次都插拔U盘, 很繁琐
原来的环境不支持rz等命令
就需要移植这个命令来使用

下载地址 https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz

2 编译脚本

# 主要内容在这里
configure_for_arm(){mkdir -p $PATH_BUILD_ARM && cd $PATH_BUILD_ARMCFLAGS=-O2 CC=arm-linux-gnueabihf-gcc $PATH_UN_TAR/configure  --prefix=${PATH_INSTALL_ARM}  --host=arm-linux-gnueabihf  --program-prefix=arm-linux-gnueabihf- \--without-profile --without-progs --without-manpages --without-tests# [1] CC=arm-linux-gnueabihf-gcc# [2] --host=arm-linux-gnueabihf# 这里两个都给他指定了,  之前只用了[2], 编译之后再开发板上运行失败# [3] --program-prefix=arm-linux-gnueabihf-# 这个用于生成可执行程序的前缀, 如最终会生成这样的程序arm-linux-gnueabihf-lrz
}
# 完整脚本
#!/bin/bash#COLORS
LOG_WHITE() { echo -e "\033[0m"    "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}
LOG_RED()   { echo -e "\033[0;31m" "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}
LOG_GREEN() { echo -e "\033[0;32m" "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}
LOG_YELLO() { echo -e "\033[0;33m" "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}
LOG_BLUE()  { echo -e "\033[0;34m" "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}
LOG_PINK()  { echo -e "\033[0;35m" "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}
LOG_CYAN()  { echo -e "\033[0;36m" "[${FUNCNAME[1]},${BASH_LINENO}] ${@} \033[0m" ;}errCode=0
errCheck(){errCode=$?if [ $errCode != 0 ];thenLOG_RED $errCodeexit $errCodefi
}PATH_CURR_SCRIPT=$(cd $(dirname $0);pwd -P)      # 当前脚本的路径FILE_TAR_GZ=${PATH_CURR_SCRIPT}/lrzsz-0.12.20.tar.gz
PATH_UN_TAR=${PATH_CURR_SCRIPT}/temp # 解压目录PATH_BUILD_PC=${PATH_UN_TAR}/build_pc
PATH_BUILD_ARM=${PATH_UN_TAR}/build_arm
PATH_INSTALL_PC=${PATH_CURR_SCRIPT}/install_pc
PATH_INSTALL_ARM=${PATH_CURR_SCRIPT}/install_armun_tar_file(){mkdir -p $PATH_UN_TARtar -zxvf $FILE_TAR_GZ -C $PATH_UN_TAR --strip-components 1# --strip-components 1 去掉顶级目录}configure_for_pc(){mkdir -p $PATH_BUILD_PC && cd $PATH_BUILD_PC$PATH_UN_TAR/configure --prefix=${PATH_INSTALL_PC}  
}configure_for_arm(){mkdir -p $PATH_BUILD_ARM && cd $PATH_BUILD_ARMCFLAGS=-O2 CC=arm-linux-gnueabihf-gcc $PATH_UN_TAR/configure  --prefix=${PATH_INSTALL_ARM}  --host=arm-linux-gnueabihf  --program-prefix=arm-linux-gnueabihf- \--without-profile --without-progs --without-manpages --without-tests# [1] CC=arm-linux-gnueabihf-gcc# [2] --host=arm-linux-gnueabihf# 这里两个都给他指定了,  之前只用了[2], 编译之后再开发板上运行失败# [3] --program-prefix=arm-linux-gnueabihf-# 这个用于生成可执行程序的前缀, 如最终会生成这样的程序arm-linux-gnueabihf-lrz
}make_target(){  # [0]-pathcd $1make -j12
}make_install(){ # [0]-pathcd $1make install
}TTY_X=$(($(stty size | awk '{print $2}')-6))                    # determine terminal width
TTY_Y=$(($(stty size | awk '{print $1}')-6))                    # determine terminal height
OPTIONS=$1
if [ -z "$OPTIONS" ]; then                               # 如果输入的参数为空,则进入图形界面,否则为命令行编译OPTIONS=$(whiptail         \--title             "$0"  \--backtitle         "$URL" \--menu              "请选择要运行的指令"  ${TTY_Y} ${TTY_X} 0 \"tar"               "tar -zxvf $FILE_TAR_GZ -C $PATH_UN_TAR --strip-components 1" \"configure_pc"      "为PC端生成配置文件" \"configure_arm"     "为ARM端生成配置文件" \"make_pc"           "编译" \"make_arm"          "编译" \"install_pc"        "安装" \"install_arm"       "安装" \--ok-button "OK"  --cancel-button "Cancel"  \3>&1 1>&2 2>&3)
fi
case $OPTIONS intar)            un_tar_file;;configure_pc)   configure_for_pc;;make_pc)        make_target   $PATH_BUILD_PC  ;;install_pc)     make_install  $PATH_BUILD_PC;;configure_arm)  configure_for_arm;;make_arm)       make_target   $PATH_BUILD_ARM ;;install_arm)    make_install $PATH_BUILD_ARM;;*)              LOG_YELLO "unknow '${OPTIONS}'";;
esac

3 编译步骤

 ./build_configure.sh tar./build_configure.sh configure_arm./build_configure.sh make_arm./build_configure.sh install_arm

http://www.ppmy.cn/devtools/163640.html

相关文章

记录一个C语言打印的误区:无符号的数通过%d打印出现符号位的现象

打印无符号数 • 使用 printf 打印无符号数时,应使用 %u 格式说明符。 • 如果错误地使用 %d(用于有符号整数),可能会导致误解,因为 %d 会将无符号数解释为有符号数。 符号位的误解(错误出现) …

Solar2月应急响应公益月赛

暗链排查-1 burp 抓包,找到 js,cyberchef 一把梭,纯黑盒 暗链排查-2 roottianshou-0e3d41087e0b47e587d7b244849b893b-7769f979cf-szxvl:~# gcore -o nginx_core 11 [Thread debugging using libthread_db enabled] Using host libthread_db…

package-info.java的作用

package-info.java 是 Java 中一个特殊的文件,主要用于为某个包提供元数据或文档信息。它并不是必需的,但在许多场景中非常有用。以下是它的主要作用: 1. 包级注释 package-info.java 通常用于为包提供文档注释,描述包的功能、用…

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程

DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。‌为了解决这一问题,DeepSeek团队已经暂停了API服务充值,以避免对用户造成业务影响。目前,存量充值金额仍可继续调用,但充值功能暂时不可用‌。 DeepSe…

java23种设计模式-享元模式

享元模式(Flyweight Pattern)学习笔记 1. 模式定义 结构型设计模式,通过共享技术实现大量细粒度对象的复用,有效减少内存占用并提高性能。核心思想:分离内部状态(可共享)与外部状态&#xff0…

Spring 集成 MyBatis 操作指南(详细实例)

📝 1. 前言 Spring 框架与 MyBatis 是 Java 开发中常见的组合,MyBatis 作为一款轻量级 ORM 框架,提供灵活的 SQL 语句管理,同时结合 Spring 的依赖注入和事务管理,能大大提高数据库访问的开发效率。本文将详细介绍 Spring 集成 MyBatis 的操作步骤,并提供完整实例。 �…

k8s出问题后 应该查看哪些内容

要确认 Kubernetes (k8s) 系统是否正常运行,需要检查集群的 核心组件、节点状态、Pod 运行情况 和 网络通信。以下是详细步骤和命令: 1. 检查集群节点状态 kubectl get nodes期望输出:所有节点状态为 Ready。异常情况: NotReady&…

使用Docker Compose部署 MySQL8

MySQL 8 是一个功能强大的关系型数据库管理系统,而 Docker 则是一个流行的容器化平台。结合使用它们可以极大地简化 MySQL 8 的部署过程,并且确保开发环境和生产环境的一致性。 安装 Docker 和 Docker Compose 首先,确保你的机器上已经安装了 Docker 和 Docker Compose。 …