萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 安裝配置 rz/sz (lrzsz) 完整步驟:RPM、原始碼編譯、交叉編譯嵌入式

lrzsz 套件提供 rz/sz 兩支 ZModem 協定傳輸工具。大多數桌面/伺服器發行版可直接用套件管理器安裝;嵌入式開發板則需**交叉編譯**並部署至目標板檔案系統。本文涵蓋三種安裝路徑:RPM/DEB 套件、原始碼編譯、ARM 交叉編譯完整流程。

方式一:套件管理器 (最快、推薦)

# RHEL/CentOS/Fedora/Rocky/Alma
yum install lrzsz -y
# 或 dnf install lrzsz

# Debian/Ubuntu
apt update && apt install lrzsz

# Arch/Manjaro
pacman -S lrzsz

# openSUSE
zypper in lrzsz

安裝後直接可用 rz、sz。

方式二:原始碼編譯 (指定安裝路徑、定製選項)

# 1. 下載
wget https://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz
# 或官方: https://github.com/UweH/lrzsz (較新)

# 2. 解壓編譯
tar zxvf lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
./configure --prefix=/usr/local/lrzsz
make
make install

# 3. 建立系統路徑連結
ln -sf /usr/local/lrzsz/bin/lrz /usr/bin/rz
ln -sf /usr/local/lrzsz/bin/lsz /usr/bin/sz

# 4. 驗證
rz --version
sz --version

方式三:ARM 交叉編譯部署至嵌入式開發板 (mini2440 範例)

環境

  • 宿主機:Ubuntu 9.10 (舊版範例,現代同理)
  • 目標板:mini2440 (ARM920T)
  • 交叉編譯器:arm-linux-gcc (3.4.1)
  • NFS 共享掛載點:/mnt/nfs

步驟

# 1. 下載舊版源碼 (rzsz-3.48.tar.gz)
wget https://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz
tar zxvf rzsz-3.48.tar.gz
cd rzsz-3.48/src

# 2. 修改 Makefile 指定交叉編譯器與註冊宏
# CC = arm-linux-gcc
# OFLAG = -O -DREGISTERED   # 避免 "UNREGISTERED COPY" 提示

# 3. 編譯 (非 GNU autotools,直接 make 目標系統)
make posix   # POSIX 相容系統 (Linux)

# 輸出: rz, sz, rb, rx, rc, sb, sx, zcommand, zcommandi

# 4. 部署至開發板
# 4.1 複製執行檔至 NFS
cp rz sz rb rx rc sb sx zcommand zcommandi /mnt/nfs/
# 4.2 開發板掛載 NFS 並複製至 /usr/bin
# cp /mnt/nfs/rz /mnt/nfs/sz ... /usr/bin/

# 4.3 複製交叉編譯器 runtime 庫
# 宿主機: /usr/local/arm/3.4.1/arm-linux/lib/* → 開發板: /lib/

# 4.4 設定環境變數 (關鍵:指定串口裝置)
export RZSZLINE=/dev/modem   # 或 /dev/ttySAC0 等實際串口
# 寫入 /etc/profile 或 ~/.bashrc 永久生效

驗證與測試

# 開發板串口終端 (SecureCRT/Putty)
rz -be   # 彈出上傳視窗
sz -be test.txt  # 下載至 PC

常見編譯錯誤與修正

lrzsz 安裝配置示意圖

copyright © 萬盛學電腦網 all rights reserved
錯誤原因修正
undefined reference to `crc32'缺少 zlib安裝 zlib-devel / zlib1g-dev,或 Makefile LIBS 加 -lz
signal.h: No such file缺少核心標頭檔安裝 linux-headers / kernel-devel
執行時 "Warning: Missing environment variable 'RZSZLINE'"未設定串口裝置export RZSZLINE=/dev/ttyS0