Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 交叉編譯安裝 lrzsz (rz/sz) 完全教程:嵌入式開發板部署實戰

編輯:關於 Linux

在嵌入式 Linux 開發板 (ARM/MIPS/RISC-V) 上部署 rz/sz,通常需在 x86 主機交叉編譯 lrzsz 源碼。本文以 Ubuntu x86 主機 + ARM 開發板 (mini2440, 内核 2.6.30) 為例,詳述下載、修改 Makefile、交叉編譯、部署 NFS 掛載、環境變量設置全流程,並提供通用交叉編譯模板。

一、環境準備

  • 主機:Ubuntu 9.10 (x86),安裝交叉工具鏈 arm-linux-gcc-3.4.1 (路徑 /usr/local/arm/3.4.1/bin)
  • 目標板:mini2440 (ARM920T),內核 2.6.30.10,根文件系統掛載 NFS (/mnt/nfs)
  • 網絡:主機 IP 192.168.1.100,開發板 IP 192.168.1.200,NFS 服務運行

二、源碼獲取與解壓

wget https://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz
# 鏡像源: https://github.com/jerrykuku/lrzsz/archive/refs/tags/v0.12.20.tar.gz (較新)
tar zxvf rzsz-3.48.tar.gz
cd rzsz-3.48
# 源碼結構: src/ 目錄含 rz.c, sz.c 等

三、關鍵修改:Makefile 適配交叉編譯

編輯根目錄 Makefile (非 src/Makefile):

# 原配置
CC = gcc
OFLAG = -O

# 修改為交叉編譯器及註冊宏 (消除 "UNREGISTERED COPY" 警告)
CC = arm-linux-gcc
OFLAG = -O -DREGISTERED
# -DREGISTERED 定義 REGISTERED 宏,源碼中 #ifdef REGISTERED 判斷授權

四、編譯構建


# 進入源碼目錄
cd src

# 查看支持平台
make
# 輸出列表: posix, linux, bsd, sysvr4... 選擇 posix (POSIX 標準兼容)

# 執行編譯
make posix

編譯輸出關鍵步驟:


gcc -m486 -O2 -DLINUX -DHVM -DREGISTERED -s -DPOSIX -DMD=2 rz.c -o rz
ln rz rb; ln rz rx; ln rz rc  # 創建硬鏈接別名
gcc -m486 -O2 -DLINUX -DHVM -DREGISTERED -s -DPOSIX sz.c -o sz
ln sz sb; ln sz sx; ln sz zcommand; ln sz zcommandi

生成文件:rz, sz, rb, rx, rc, sb, sx, zcommand, zcommandi (均為同一二進制不同入口)。

五、部署到開發板

1. 複製二進制到 NFS 共享目錄


cp rz sz rb rx rc sb sx zcommand zcommandi /mnt/nfs/

2. 開發板掛載 NFS 並複製到 /usr/bin


# 開發板控制台
mount -t nfs -o nolock 192.168.1.100:/mnt/nfs /mnt
cp /mnt/rz /mnt/sz /mnt/rb /mnt/rx /mnt/rc /mnt/sb /mnt/sx /mnt/zcommand /mnt/zcommandi /usr/bin/
chmod +x /usr/bin/rz /usr/bin/sz ...

3. 複製交叉編譯器運行時庫 (關鍵!)

動態鏈接程序需目標板存在對應 libc/ld-linux.so:


# 主機複製
cp -r /usr/local/arm/3.4.1/arm-linux/lib/* /mnt/nfs/lib/
# 或開發板從 NFS 複製
cp /mnt/lib/* /lib/

或靜態編譯避免依賴:OFLAG = -O -DREGISTERED -static (體積增大)。

4. 設置環境變量 RZSZLINE


# 開發板 /etc/profile 或 ~/.bashrc
export RZSZLINE=/dev/ttyS0  # 或 /dev/modem,對應串口設備節點
# 若不設置,rz 執行會警告: "Warning: Missing environment variable 'RZSZLINE'"

六、驗證測試


# 開發板串口終端 (SecureCRT 連接 COM 口)
rz -be
# 彈出文件選擇框,上傳測試文件
sz -be test.txt
# 下載到本地

七、通用交叉編譯模板 (CMake/Autotools 專案)


# 設置環境變量
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export STRIP=arm-linux-gnueabihf-strip
export AR=arm-linux-gnueabihf-ar
export RANLIB=arm-linux-gnueabihf-ranlib
export CFLAGS="-O2 -pipe -march=armv7-a -mfpu=neon -mfloat-abi=hard"
export LDFLAGS="-static"  # 可選靜態鏈接

# Autotools 專案
./configure --host=arm-linux-gnueabihf --prefix=/usr/local/lrzsz \
    --disable-nls --enable-static --disable-shared
make -j$(nproc)
make install DESTDIR=/path/to/rootfs

# CMake 專案
cmake -DCMAKE_TOOLCHAIN_FILE=arm-linux.cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/lrzsz \
    -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
make install DESTDIR=/path/to/rootfs

八、總結

嵌入式部署 rz/sz 核心難點:交叉編譯器指定 (CC)、註冊宏 (-DREGISTERED)、運行時庫部署 (libc/ld-linux)、串口設備環境變量 (RZSZLINE)。掌握此流程,可推廣至任何 CLI 工具 (如 busybox, strace, iperf3) 的交叉編譯部署。

嵌入式交叉編譯部署 lrzsz 流程圖

Copyright © Windows教程網 All Rights Reserved