1.报错信息如下
HOSTCC scripts/pnmtologo
HOSTCC scripts/conmakehash
HOSTCC scripts/sortextable
HOSTCC scripts/asn1_compiler
HOSTCC scripts/extract-cert
/tmp/ccjQu2Vk.o: In function `main':
extract-cert.c:(.text.startup+0x25): undefined reference to `OPENSSL_init_crypto'
extract-cert.c:(.text.startup+0x31): undefined reference to `OPENSSL_init_crypto'
collect2: error: ld returned 1 exit status
scripts/Makefile.host:90: recipe for target 'scripts/extract-cert' failed
make[1]: *** [scripts/extract-cert] Error 1
Makefile:1067: recipe for target 'scripts' failed
make: *** [scripts] Error 2
2.分析原因,由于打印信息分析是因为openssl的版本不匹配导致的问题
3.查看当前openssl版本
openssl version -a
可以看到版本信息和安装位置
显示如下
root@phytium:/lib/x86_64-linux-gnu# openssl version -a
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
4.openssl版本升级
sudo rm /usr/bin/openssl
wget https://www.openssl.org/source/openssl-1.1.0k.tar.gz
tar -zxvf openssl-1.1.0k.tar.gz
cd openssl-1.1.0k
sudo ./config
sudo make install
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl
5.查看新版本信息
openssl version -a
OpenSSL 1.1.0k 28 May 2019
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib/engines-1.1"
6.如果内核编译还是不成功的话,需要查看
cd /usr/lib/x86_64-linux-gnu/
目录下文件libcrypto.so libssl.so的软连接
原来我的虚拟机默认是如下
lrwxrwxrwx 1 root root 40 7月 13 2021 libcrypto.so -> /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
lrwxrwxrwx 1 root root 35 4月 22 2021 libcrypt.so -> /lib/x86_64-linux-gnu/libcrypt.so.1
lrwxrwxrwx 1 root root 37 7月 13 2021 libssl.so -> /lib/x86_64-linux-gnu/libssl.so.1.0.0
7.更新新的文件
cd penssl-1.1.0k`
将文件拷贝对应文件夹下,做好软连接
sudo cp -rf libcrypto.so.1.1 /lib/x86_64-linux-gnu/
sudo cp -rf libssl.so.1.1* /lib/x86_64-linux-gnu/
cd /usr/lib/x86_64-linux-gnu/
sudo ln -sf /lib/x86_64-linux-gnu/libssl.so.1.1 libssl.so
sudo ln -sf /lib/x86_64-linux-gnu/libcrypto.so.1.1 libcrypto.so
8.区别
原来的文件名字:
libssl.so.1.0.0
libcrypto.so.1.0.0
新文件名称:
libssl.so.1.1
libcrypto.so.1.1
操作到此可以 正常编译内核了