You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB 15.1加载sys_exec插件报错:wrong ELF class: ELFCLASS32

解决MariaDB加载lib_mysqludf_sys.so时的ELFCLASS32错误

这个错误的核心原因很明确:你当前使用的是64位的x86_64系统和MariaDB,但放入插件目录的lib_mysqludf_sys.so是32位版本的,两者架构不兼容,导致加载失败。下面是具体的修复步骤:

1. 确认系统和MariaDB的位数

先验证你的环境确实是64位架构:

  • 检查系统架构:
    uname -m
    
    输出应为x86_64,说明是64位系统。
  • 检查MariaDB的位数:
    file $(which mysqld)
    
    输出内容中会包含x86-64字样,确认MariaDB是64位版本。

2. 替换为64位版本的lib_mysqludf_sys.so

你需要重新编译生成适配64位环境的共享库:

  • 先删除现有的32位库文件:
    rm /usr/lib/x86_64-linux-gnu/mariadb18/plugin/lib_mysqludf_sys.so
    
  • 安装编译依赖:针对你的MariaDB 15.1版本,安装对应的MariaDB开发包(以Debian/Ubuntu系统为例):
    sudo apt-get install mariadb-server-dev
    
    如果找不到通用包,可以尝试指定对应分支的版本,比如mariadb-server-dev-10.11(MariaDB 15.1通常对应10.11分支)。
  • 获取lib_mysqludf_sys的源码包并解压到本地目录。
  • 进入源码目录,编译生成64位共享库:
    gcc -fPIC -Wall $(mysql_config --include) -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
    
    这里$(mysql_config --include)会自动获取MariaDB头文件的正确路径,避免手动指定出错。
  • 将编译好的64位库复制到插件目录:
    sudo cp lib_mysqludf_sys.so /usr/lib/x86_64-linux-gnu/mariadb18/plugin/
    
  • 调整文件权限,确保MariaDB进程能正常读取:
    sudo chmod 755 /usr/lib/x86_64-linux-gnu/mariadb18/plugin/lib_mysqludf_sys.so
    sudo chown mysql:mysql /usr/lib/x86_64-linux-gnu/mariadb18/plugin/lib_mysqludf_sys.so
    

3. 重新创建函数

回到MariaDB命令行,重新执行创建函数的命令:

create function sys_exec returns int soname 'lib_mysqludf_sys.so';

这次应该能成功加载插件了。

额外注意点

  • 如果你不确定MariaDB的插件目录是否正确,可以在MariaDB中执行以下命令查看:
    show variables like 'plugin_dir';
    
    确保你把库文件放到了输出显示的目录中。
  • 编译过程中如果遇到头文件找不到的错误,检查mysql_config是否存在(执行which mysql_config),如果不存在,说明MariaDB开发包未正确安装。

内容的提问来源于stack exchange,提问作者Oracy Martos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:29:22