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

arm | lrzsz移植记录

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_ARM
    CFLAGS=-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 ];
    then
        LOG_RED $errCode
        exit $errCode

    fi
}

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_arm



un_tar_file(){
    mkdir -p $PATH_UN_TAR
    tar -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_ARM
    CFLAGS=-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]-path
    cd $1
    make -j12
}

make_install(){ # [0]-path
    cd $1
    make 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 in
    tar)            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

相关文章:

  • 多线程学习之路
  • 阿里云服务器部署项目笔记 实操 centos7.9
  • 《C++ primer》第二章
  • 一、C++上岸教程—C语言基础
  • CentOS 7 IP 地址设置保姆级教程
  • playbin之Source插件加载流程源码剖析
  • 2024_BUAA数据结构上机题解分享
  • 03.03 QT
  • Android开发Android调web的方法
  • Feign 深度解析
  • 火语言RPA--PDF提取表格
  • 详解LSM树
  • matlab 包围盒中心匹配法实现点云粗配准
  • 【Elasticsearch】Set up a data stream 创建data stream
  • AIP-158 分页
  • Leetcode 215 数组中的第K个最大元素
  • 一、计算机等级考试——标准评分
  • Leetcode 37: 解数独
  • 【数据分析】复杂实验,通过正交表组合来进行实验设计
  • 安全渗透测试的全面解析与实践
  • 消息人士称以色列政府初步同意扩大对加沙军事行动
  • 美乌矿产协议预计最早于今日签署
  • 刘国中:毫不松懈巩固拓展脱贫攻坚成果,全力以赴抓好农业防灾减灾工作
  • 共绘“彩色上海”,IP SH艺术共创沙龙首期圆满举办
  • 上海国际咖啡文化节开幕,北外滩集结了超350个展位
  • 狄威已任国铁集团副总经理