郑州网站建设国奥大厦,长沙网站设计联系地址,静态网站有后台吗,德州有做网站的一. 获取源码 https://github.com/mtk-openwrt/u-boot 二. 编译步骤 编译环境为ubuntu 18.04。交叉编译工具链我用的是openwrt编译生成的工具链#xff0c;并设置到环境变量#xff0c;如下#xff1a; export PATH$PATH:/root/mt8976/BPI-R3-OPENWRT-V21.02.3-main/staging…一. 获取源码 https://github.com/mtk-openwrt/u-boot 二. 编译步骤 编译环境为ubuntu 18.04。交叉编译工具链我用的是openwrt编译生成的工具链并设置到环境变量如下 export PATH$PATH:/root/mt8976/BPI-R3-OPENWRT-V21.02.3-main/staging_dir/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/bin export STAGING_DIR/root/mt8976/BPI-R3-OPENWRT-V21.02.3-main/staging_dir 1. 配置 make mt7986a_bpir3_sd_defconfig
2. 编译代码 make CROSS_COMPILEaarch64-openwrt-linux- V1
V1可以看到具体的编译命令是什么便于查看编译问题的具体原因。
PS编译过程中可能会报如下错误
tools/sunxi_toc0.o: In function toc0_verify_header:
sunxi_toc0.c:(.text0x4f5): undefined reference to RSA_set0_key
sunxi_toc0.c:(.text0x50c): undefined reference to RSA_get0_n
sunxi_toc0.c:(.text0x52a): undefined reference to RSA_get0_e
sunxi_toc0.c:(.text0x5f0): undefined reference to RSA_set0_key
sunxi_toc0.c:(.text0x702): undefined reference to RSA_set0_key
sunxi_toc0.c:(.text0x719): undefined reference to RSA_get0_n
sunxi_toc0.c:(.text0x726): undefined reference to RSA_get0_n
sunxi_toc0.c:(.text0x743): undefined reference to RSA_get0_e
sunxi_toc0.c:(.text0x750): undefined reference to RSA_get0_e
tools/sunxi_toc0.o: In function toc0_set_header:
sunxi_toc0.c:(.text0xaa5): undefined reference to RSA_get0_d
sunxi_toc0.c:(.text0xafe): undefined reference to RSA_get0_d
sunxi_toc0.c:(.text0xd81): undefined reference to RSA_get0_n
sunxi_toc0.c:(.text0xda9): undefined reference to RSA_get0_e
sunxi_toc0.c:(.text0xde9): undefined reference to RSA_get0_n
sunxi_toc0.c:(.text0xe11): undefined reference to RSA_get0_e
sunxi_toc0.c:(.text0xf14): undefined reference to RSA_get0_n
sunxi_toc0.c:(.text0xf29): undefined reference to BN_bn2binpad
sunxi_toc0.c:(.text0xf3b): undefined reference to RSA_get0_e
sunxi_toc0.c:(.text0xf50): undefined reference to BN_bn2binpad
tools/lib/ecdsa/ecdsa-libcrypto.o: In function prepare_ctx:
ecdsa-libcrypto.c:(.text0xcd): undefined reference to OPENSSL_init_ssl
ecdsa-libcrypto.c:(.text0x185): undefined reference to EC_GROUP_order_bits
tools/lib/ecdsa/ecdsa-libcrypto.o: In function ecdsa_check_signature.isra.3:
ecdsa-libcrypto.c:(.text0x3ad): undefined reference to ECDSA_SIG_set0
tools/lib/ecdsa/ecdsa-libcrypto.o: In function ecdsa_sign:
ecdsa-libcrypto.c:(.text0x497): undefined reference to ECDSA_SIG_get0
ecdsa-libcrypto.c:(.text0x4ae): undefined reference to BN_bn2binpad
ecdsa-libcrypto.c:(.text0x4c0): undefined reference to BN_bn2binpad
tools/lib/ecdsa/ecdsa-libcrypto.o: In function ecdsa_add_verify_data:
ecdsa-libcrypto.c:(.text0x68d): undefined reference to EC_GROUP_order_bits
ecdsa-libcrypto.c:(.text0x6d3): undefined reference to EC_POINT_get_affine_coordinates
tools/lib/rsa/rsa-sign.o: In function rsa_sign:
rsa-sign.c:(.text0x524): undefined reference to OPENSSL_init_ssl
tools/lib/rsa/rsa-sign.o: In function rsa_get_params:
rsa-sign.c:(.text0x973): undefined reference to RSA_get0_key
rsa-sign.c:(.text0x9c0): undefined reference to RSA_get0_key
tools/lib/rsa/rsa-sign.o: In function rsa_add_verify_data:
rsa-sign.c:(.text0xe21): undefined reference to EVP_PKEY_get0_RSA
collect2: error: ld returned 1 exit status
scripts/Makefile.host:104: recipe for target tools/dumpimage failed
make[1]: *** [tools/dumpimage] Error 1
Makefile:1916: recipe for target tools failed
make: *** [tools] Error 2 编译sunxi_toc0.c缺少openssl库也可能是因为openssl版本低导致的。这里我手动编译安装了openssl-1.1.1n版本的库具体步骤如下 cd openssl-1.1.1n ./configure make make install ldconfig 3. 取出uboot uboot编译成功结果如下
[root u-boot-mtksoc]#make CROSS_COMPILEaarch64-openwrt-linux- UPD include/generated/timestamp_autogenerated.hENVC include/generated/env.txtENVP include/generated/env.inENVT include/generated/environment.hCC cmd/version.oAR cmd/built-in.oCC env/common.oAR env/built-in.oLD u-bootOBJCOPY u-boot.srecOBJCOPY u-boot-nodtb.binRELOC u-boot-nodtb.binCAT u-boot-dtb.binCOPY u-boot.binSYM u-boot.symMKIMAGE u-boot-mtk.binCFGCHK u-boot.cfgOFCHK .config
u-boot代码编译的最原始的uboot包含符号信息debug信息等等。
u-boot-nodtb.binu-boot通过objcopy留下了必要的段所以大小较u-boot小非常多。
u-boot-dtb.bin是在u-boot-nodtb.bin的基础上追加了dts/dt.dtb文件。
u-boot.bin是u-boot-dtb.bin的副本。
u-boot.symu-boot的符号表信息。
u-boot-mtk.binu-boot.bin文件通过mkimage命令处理过的文件。用于最终烧写的文件。 三. 总结 编译BPI-R3开发板uboot用的交叉编译工具链是编译openwrt产生的编译过程中可能会报openssl相关错误可以安装openssl-1.1.1n解决记得安装完openssl就运行ldconfiguboot编译完烧写u-boot-mtk.bin文件。