tar.gz代码包建议使用稳定的版本

 

编译脚本如下

#!/bin/bash

set -euo pipefail

 

#armv7

# 解压源代码包并进入目录

tar -xvzf iproute2-6.1.0.tar.gz

cd iproute2-6.1.0

 

find -name utils.h | xargs sed -i '/#ifndef offsetof/i \char *getpass(const char *);'

 

if [  -f "config.mk" ]; then

make distclean

fi

 

# 配置编译环境,指定交叉编译工具链

CC="$HOME/opt/native/llvm/bin/armv7-unknown-linux-ohos-clang -U__MUSL__ -DHAVE_SETNS -DHAVE_HANDLE_AT" ./configure

 

# 修改编译配置禁用 SELINUX 和 ELF 特性

sed -i \

  -e 's/HAVE_SELINUX:=y/HAVE_SELINUX:=n/' \

  -e 's/HAVE_ELF:=y/HAVE_ELF:=n/' \

  -e '/CFLAGS += -DHAVE_SELINUX/d' \

  -e '/LDLIBS += -lselinux/d' \

  -e '/CFLAGS += -DHAVE_ELF/d' \

  -e '/LDLIBS +=  -lelf/d' \

  config.mk

 

# 修复函数名替换问题

find . -name f_flower.c -print0 | xargs -0 sed -i 's/rindex/strrchr/g'

 

# 编译并安装到指定目录

DESTDIR="${PWD}/../out/armv7" make install

 

echo "Build completed successfully. Output directory: ${PWD}/../out/armv7"

 

#armv8

if [  -f "config.mk" ]; then

make distclean

fi

 

# 配置编译环境,指定交叉编译工具链

CC="$HOME/opt/native/llvm/bin/aarch64-unknown-linux-ohos-clang -U__MUSL__ -DHAVE_SETNS -DHAVE_HANDLE_AT" ./configure

 

# 修改编译配置禁用 SELINUX 和 ELF 特性

sed -i \

  -e 's/HAVE_SELINUX:=y/HAVE_SELINUX:=n/' \

  -e 's/HAVE_ELF:=y/HAVE_ELF:=n/' \

  -e '/CFLAGS += -DHAVE_SELINUX/d' \

  -e '/LDLIBS += -lselinux/d' \

  -e '/CFLAGS += -DHAVE_ELF/d' \

  -e '/LDLIBS +=  -lelf/d' \

  config.mk

 

# 修复函数名替换问题

find . -name f_flower.c -print0 | xargs -0 sed -i 's/rindex/strrchr/g'

 

# 编译并安装到指定目录

DESTDIR="${PWD}/../out/armv8" make install

 

echo "Build completed successfully. Output directory: ${PWD}/../out/armv8"

 

 

编译iproute2:

NDK需要添加getpass函数定义unistd.h getpass.c

/interface/sdk_c/third_party/musl/ndk_script/adapter/ libc.ndk.json中添加:getpass

 

下载地址https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/

 

完成后:

 CC="~/opt/native/llvm/bin/armv7-unknown-linux-ohos-clang -U__MUSL__ -DHAVE_SETNS -DHAVE_HANDLE_AT"   ./configure

sed -i \

  -e 's/HAVE_SELINUX:=y/HAVE_SELINUX:=n/' \

  -e 's/HAVE_ELF:=y/HAVE_ELF:=n/' \

  -e '/CFLAGS += -DHAVE_SELINUX/d' \

  -e '/LDLIBS += -lselinux/d' \

  -e '/CFLAGS += -DHAVE_ELF/d' \

  -e '/LDLIBS +=  -lelf/d' \

 config.mk

 

find -name f_flower.c | xargs sed -i 's/rindex/strrchr/g'

make

DESTDIR=${PWD}/out make install

 

验证步骤:

  1. 查看网络接口状态:

ip link show

  1. 为接口 eth0 配置 IP 地址:

ip addr add 192.168.1.100/24 dev eth0

ip link set eth0 up

  1. 添加默认路由:

ip route add default via 192.168.1.1

  1. 验证配置:

ip addr show eth0      # 检查IP地址

ip route show          # 检查路由表

ping 192.168.1.1       # 测试连通性

​预期结果:

  • eth0 显示 IP 地址 192.168.1.100/24。
  • 路由表包含默认网关 192.168.1.1。
  • 能成功 ping 通网关。

​清理:

ip addr del 192.168.1.100/24 dev eth0

ip route del default via 192.168.1.1

以下是针对 ​iproute2 工具集的测试用例,覆盖网络设备配置、流量控制(QoS)和以太网桥接功能。每个用例包含详细步骤、预期结果及清理操作。


 

 

测试用例1:网络设备配置(IP地址、路由表)
目标:验证 ip 命令配置网络接口和路由表。
步骤:
1. 查看网络接口状态:
ip link show
2. 为接口 eth0 配置 IP 地址:
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up
3. 添加默认路由:
ip route add default via 192.168.1.1
4. 验证配置:
ip addr show eth0 # 检查IP地址
ip route show # 检查路由表
ping 192.168.1.1 # 测试连通性
预期结果:
• eth0 显示 IP 地址 192.168.1.100/24。
• 路由表包含默认网关 192.168.1.1。
• 能成功 ping 通网关。
清理:
ip addr del 192.168.1.100/24 dev eth0
ip route del default via 192.168.1.1
________________________________________
测试用例2:流量控制(QoS)
目标:验证 tc 命令限制带宽。
步骤:
1. 在接口 eth0 上添加 HTB 队列规则:
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:10 htb rate 1mbit ceil 1mbit
2. 验证规则:
tc qdisc show dev eth0
tc class show dev eth0
3. 测试带宽限制(需配合 iperf 或 wget 测试实际带宽)。
预期结果:
• tc 命令输出显示 htb 队列和 1mbit 带宽限制。
• 实际传输速率不超过 1Mbps。
清理:
tc qdisc del dev eth0 root
测试用例3:以太网桥接
目标:验证 ip 命令创建和管理网桥。
步骤:
1. 创建网桥 br0 并启用:
ip link add name br0 type bridge
ip link set br0 up
2. 将接口 eth1 和 eth2 加入网桥:
ip link set eth1 master br0
ip link set eth2 master br0
3. 验证桥接状态:
bridge link show # 显示桥接接口
ip link show br0 # 显示网桥状态
4. 测试网络连通性(通过桥接接口通信)。
预期结果:
• bridge link show 显示 eth1 和 eth2 属于 br0。
• 桥接接口之间可互相通信。
清理:
ip link set eth1 nomaster
ip link set eth2 nomaster
ip link del br0

 

 

 

 

 

 

 

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐