Ubuntu20.04编译LuaPlus53遇问题求助:无动态库/链接错误
问题解决步骤
一、修复静态库重定位错误(生成带-fPIC的LuaPlus静态库)
Linux下将静态库链接到动态库时,要求静态库的目标文件必须是位置无关代码(PIC),否则会触发R_X86_64_PC32重定位错误。
- 修改LuaPlus编译配置,添加
-fPIC编译选项:- 找到项目中的Makefile或编译脚本
- 在
CFLAGS和CXXFLAGS中追加-fPIC参数,示例:CFLAGS += -fPIC CXXFLAGS += -fPIC - 执行
make clean && make重新编译,生成新的lua53-luaplus-static.a
- 链接时确保静态库正确加入编译命令,示例:
gcc -shared -o libpmds_core.so [你的目标文件列表] lua53-luaplus-static.a -ldl -lm
二、修复运行时lua_pcall未定义错误
改用liblua53.so后出现符号缺失,通常是链接或库路径问题:
- 编译
libpmds_core.so时未正确关联Lua动态库:
确保编译命令末尾加入Lua库链接参数,示例:gcc -shared -o libpmds_core.so [你的目标文件列表] -L[Lua库所在目录] -llua53 - 运行时系统找不到
liblua53.so:- 将
liblua53.so复制到系统默认库路径(如/usr/lib);或 - 运行前设置环境变量指定库路径:
export LD_LIBRARY_PATH=[Lua库所在目录]:$LD_LIBRARY_PATH ./pmds_debugger ../files/Half-your-data/app.xml -s > log
- 将
- 验证
liblua53.so是否包含目标符号:
使用nm命令检查:
若无输出,说明该库未包含nm -D liblua53.so | grep lua_pcalllua_pcall符号,需重新编译Lua并确保生成的动态库包含所需功能。
额外建议
优先选择静态库方案,确保LuaPlus和Lua本身都用-fPIC编译,既能解决重定位问题,也能避免运行时的库依赖风险。
内容的提问来源于stack exchange,提问作者Natural_User
相关产品推荐
相关产品推荐

