Mysql初始化提示libcrypto.so.3: ELF load command alignment not page-aligned
最近在适配信创平台,通过二进制包安装Mysql,在初始化这一步出现了以下报错
报错内容
./mysqld: error while loading shared libraries: libcrypto.so.3: ELF load command alignment not page-aligned
故障原因
动态库libcrypto.so.3的 LOAD 段所需的对齐大小与当前系统的内存页大小不兼容,所以引入这个动态库的程序在编译时出现了 ELF load command alignment not page-aligned
错误。
1 查询内存页大小
1.1 查询系统内存页大小
$ getconf PAGESIZE
65536
1.2 查询该动态库所需对其大小
$ cd /tmp/mysql-8.0.35-linux-glibc2.28-aarch64/lib/private
$ readelf -l libcrypto.so.3
Elf 文件类型为 DYN (共享目标文件)
Entry point 0xb4000
There are 8 program headers, starting at offset 64
程序头:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x000000000038ff40 0x000000000038ff40 R E 0x10000
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 0x10
GNU_EH_FRAME 0x000000000030a5e8 0x000000000030a5e8 0x000000000030a5e8
0x0000000000014dcc 0x0000000000014dcc R 0x4
LOAD 0x000000000039b1d0 0x00000000003ab1d0 0x00000000003ab1d0
0x0000000000057350 0x000000000005a4b0 RW 0x10000
GNU_RELRO 0x000000000039b1d0 0x00000000003ab1d0 0x00000000003ab1d0
0x0000000000054e30 0x0000000000054e30 R 0x1
DYNAMIC 0x00000000004b2000 0x0000000000406000 0x0000000000406000
0x0000000000000240 0x0000000000000240 RW 0x8
LOAD 0x00000000004b2000 0x0000000000406000 0x0000000000406000
0x0000000000025f18 0x0000000000025f18 RW 0x1000
NOTE 0x00000000004d7ef0 0x000000000042bef0 0x000000000042bef0
0x0000000000000024 0x0000000000000024 R 0x4
系统内存页大小为65536,而libcrypto.so.3动态库的Flags Align为0x1000(4096),要保证兼容libcrypto.so.3动态库的Flags Align需为系统内存页大小或为系统内存页大小的公倍数,65536或65536的倍数
2 解决方法
搜索系统自带的libcrypto.so.3文件,一般在/usr/lib64目录下,复制更改名称到mysql的lib目录下。其他出现的类似报错处理方法雷同
$ cd /tmp/mysql-8.0.35-linux-glibc2.28-aarch64/lib/private
$ mv libcrypto.so.3 libcrypto.so.3_bak
$ cp /usr/lib64/libcrypto.so.3 ./libcrypto.so.3
注意:系统的openssl需为3或以上版本才有libcrypto.so.3文件,如果是libcrypto.so.1.1文件,则系统使用的是openssl1.1,不兼容,会出现以下报错,需要先手动编译openssl3,再复制过来
/data/mysql/mysql-8.0.35/bin/mysqld: /data/mysql/mysql-8.0.35/bin/../lib/private/libssl.so.3: version `OPENSSL_
3.0.0' not found (required by /data/mysql/mysql-8.0.35/bin/mysqld)
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
运维小记!
喜欢就支持一下吧
打赏
微信
支付宝