ARM64架构CentOS7编译HAProxy 2.5集成Lua5.4遇链接错误求助
解决ARM64架构CentOS7编译HAProxy 2.5集成Lua5.4的链接错误
1. 移除ARM64不兼容的编译参数
USE_REGPARM=1是x86架构特有的寄存器传参优化参数,ARM64架构不支持该选项,会干扰编译链接流程,必须从编译命令中删除。
2. 彻底清理旧Lua并重新编译安装Lua5.4
- 卸载系统默认的Lua 5.1.4:
yum remove lua lua-devel -y - 下载Lua5.4源码并针对ARM64编译(指定独立安装路径避免冲突):
wget https://www.lua.org/ftp/lua-5.4.6.tar.gz tar zxf lua-5.4.6.tar.gz cd lua-5.4.6 make ARCH=aarch64 linux make install INSTALL_TOP=/usr/local/lua54 - 验证安装结果:
正常输出应为/usr/local/lua54/bin/lua -vLua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio
3. 明确指定HAProxy编译的Lua路径参数
HAProxy编译时需手动指定Lua的头文件和库路径,避免系统误找旧版本,修改后的编译命令如下:
make -j $(nproc) TARGET=linux-glibc \ USE_PCRE=1 USE_PCRE_JIT=1 \ USE_OPENSSL=1 USE_ZLIB=1 \ USE_LINUX_TPROXY=1 \ USE_LUA=1 LUA_INC=/usr/local/lua54/include LUA_LIB=/usr/local/lua54/lib LUA_LIB_NAME=lua5.4 \ USE_THREAD=1 USE_TFO=1
LUA_INC:指定Lua头文件所在目录LUA_LIB:指定Lua库文件所在目录LUA_LIB_NAME:指定Lua库的具体名称(lua5.4)
4. 配置系统库路径
编译完成后若HAProxy提示找不到lua5.4库,需添加库路径到系统配置:
echo "/usr/local/lua54/lib" > /etc/ld.so.conf.d/lua54.conf ldconfig
5. 验证集成结果
编译完成后执行以下命令,确认Lua集成成功:
./haproxy -v
输出的Build options和Feature list中应包含USE_LUA=1和+LUA标识。
内容的提问来源于stack exchange,提问作者kdGeorgiev
相关产品推荐
相关产品推荐

