ubuntu16.04编译uboot2022.10错误提示:
ools/sunxi_toc0.o:在函数‘toc0_verify_header’中:
sunxi_toc0.c:(.text+0x4f5):对‘RSA_set0_key’未定义的引用
sunxi_toc0.c:(.text+0x50c):对‘RSA_get0_n’未定义的引用
sunxi_toc0.c:(.text+0x52a):对‘RSA_get0_e’未定义的引用
sunxi_toc0.c:(.text+0x5f0):对‘RSA_set0_key’未定义的引用
sunxi_toc0.c:(.text+0x702):对‘RSA_set0_key’未定义的引用
sunxi_toc0.c:(.text+0x719):对‘RSA_get0_n’未定义的引用
sunxi_toc0.c:(.text+0x726):对‘RSA_get0_n’未定义的引用
sunxi_toc0.c:(.text+0x743):对‘RSA_get0_e’未定义的引用
sunxi_toc0.c:(.text+0x750):对‘RSA_get0_e’未定义的引用
tools/sunxi_toc0.o:在函数‘toc0_set_header’中:
sunxi_toc0.c:(.text+0xaa5):对‘RSA_get0_d’未定义的引用
sunxi_toc0.c:(.text+0xafe):对‘RSA_get0_d’未定义的引用
sunxi_toc0.c:(.text+0xd81):对‘RSA_get0_n’未定义的引用
sunxi_toc0.c:(.text+0xda9):对‘RSA_get0_e’未定义的引用
sunxi_toc0.c:(.text+0xde9):对‘RSA_get0_n’未定义的引用
sunxi_toc0.c:(.text+0xe11):对‘RSA_get0_e’未定义的引用
sunxi_toc0.c:(.text+0xf14):对‘RSA_get0_n’未定义的引用
sunxi_toc0.c:(.text+0xf29):对‘BN_bn2binpad’未定义的引用
sunxi_toc0.c:(.text+0xf3b):对‘RSA_get0_e’未定义的引用
sunxi_toc0.c:(.text+0xf50):对‘BN_bn2binpad’未定义的引用
tools/lib/ecdsa/ecdsa-libcrypto.o:在函数‘prepare_ctx’中:
ecdsa-libcrypto.c:(.text+0xcd):对‘OPENSSL_init_ssl’未定义的引用
ecdsa-libcrypto.c:(.text+0x185):对‘EC_GROUP_order_bits’未定义的引用
tools/lib/ecdsa/ecdsa-libcrypto.o:在函数‘ecdsa_check_signature.isra.3’中:
ecdsa-libcrypto.c:(.text+0x3ad):对‘ECDSA_SIG_set0’未定义的引用
tools/lib/ecdsa/ecdsa-libcrypto.o:在函数‘ecdsa_sign’中:
ecdsa-libcrypto.c:(.text+0x497):对‘ECDSA_SIG_get0’未定义的引用
ecdsa-libcrypto.c:(.text+0x4ae):对‘BN_bn2binpad’未定义的引用
ecdsa-libcrypto.c:(.text+0x4c0):对‘BN_bn2binpad’未定义的引用
tools/lib/ecdsa/ecdsa-libcrypto.o:在函数‘ecdsa_add_verify_data’中:
ecdsa-libcrypto.c:(.text+0x68d):对‘EC_GROUP_order_bits’未定义的引用
ecdsa-libcrypto.c:(.text+0x6d3):对‘EC_POINT_get_affine_coordinates’未定义的引用
tools/lib/rsa/rsa-sign.o:在函数‘rsa_sign’中:
rsa-sign.c:(.text+0x524):对‘OPENSSL_init_ssl’未定义的引用
tools/lib/rsa/rsa-sign.o:在函数‘rsa_get_params’中:
rsa-sign.c:(.text+0x973):对‘RSA_get0_key’未定义的引用
rsa-sign.c:(.text+0x9c0):对‘RSA_get0_key’未定义的引用
tools/lib/rsa/rsa-sign.o:在函数‘rsa_add_verify_data’中:
rsa-sign.c:(.text+0xe21):对‘EVP_PKEY_get0_RSA’未定义的引用
collect2: error: ld returned 1 exit status
scripts/Makefile.host:104: recipe for target ‘tools/dumpimage’ failed
make[2]: *** [tools/dumpimage] Error 1
/home/male/samsung/uboot/u-boot-2022.10/Makefile:1875: recipe for target ‘tools’ failed
make[1]: *** [tools] Error 2
make[1]: Leaving directory ‘/home/male/samsung/uboot/u-boot-2022.10/build’
Makefile:177: recipe for target ‘sub-make’ failed
make: *** [sub-make] Error 2
root@vm:/home/male/samsung/uboot/u-boot-2022.10# tools/sunxi_toc0.o:在函数‘toc0_verify_header’中:
bash: tools/sunxi_toc0.o:在函数‘toc0_verify_header’中:: 没有那个文件或目录
root@vm:/home/male/samsung/uboot/u-boot-2022.10# sunxi_toc0.c:(.text+0x4f5):对‘RSA_set0_key’未定义的引用
bash: 未预期的符号
原因openssl默认版本太低
解决办法:
先检查下openssl版本:
将openssl升级到openssl-1.1.1,下载openssl1.1.1版本源码:
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
解压编译安装:
tar xvf openssl-1.1.1.tar.gz cd openssl-1.1.1 ./config make sudo make install sudo ldconfig
之后需要删除旧版本
sudo rm mv /usr/bin/openssl /root/ sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl sudo rm /usr/lib/x86_64-linux-gnu/libcrypto.so sudo ln -s /usr/local/lib/libcrypto.so /usr/lib/x86_64-linux-gnu/ sudo rm /usr/lib/x86_64-linux-gnu/libssl.so sudo ln -s /usr/local/lib/libssl.so /usr/lib/x86_64-linux-gnu/
继续uboot编译成功。