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"
--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
chmod +x /tmp/edge
/tmp/edge -h
理论上就不会再出现:
Illegal instruction
一个经验建议(针对 Xiaomi Northstar)
这种设备最稳定的编译模式其实是:
-march=armv7-a
-mfloat-abi=soft
-O2
-static
-mfloat-abi=soft
-O2
-static
而不是:
softfp
hardfp
hardfp
否则非常容易出现你刚刚遇到的:
Illegal instruction
共有 0 条评论