R2d n2n编译

推荐编译参数(稳定)

重新执行:

make clean

然后:

./configure \
--host=arm-linux \
CC=arm-linux-gnueabi-gcc \
CFLAGS="-Os -static -fno-pie -no-pie \
-march=armv7-a \
-mcpu=cortex-a9 \
-mfloat-abi=soft \
-DN2N_NO_AESNI \
-DN2N_NO_NEON" \
LDFLAGS="-static -no-pie"

再编译:

make -j$(nproc)

编译后验证(很重要)

检查是否还有 VFP 指令:

arm-linux-gnueabi-objdump -d edge | grep -E "vldr|vstr|vldm|vstm"

如果为空,就说明成功了。


再检查 ABI

readelf -A edge

应该 不会出现:

Tag_FP_arch

或者:

Tag_ABI_VFP_args

最终测试

上传:

scp edge root@router:/tmp
chmod +x /tmp/edge
/tmp/edge -h

理论上就不会再出现:

Illegal instruction

一个经验建议(针对 Xiaomi Northstar)

这种设备最稳定的编译模式其实是:

-march=armv7-a
-mfloat-abi=soft
-O2
-static

而不是:

softfp
hardfp

否则非常容易出现你刚刚遇到的:

Illegal instruction

版权声明:
作者:yxbinghe
链接:https://www.zhanhao.ch/?p=629
来源:ice.99
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>