从lua 4.0.1升级到5.1.4时链接错误

Gre*_*eta 3 c++ lua linker-errors

我正在研究一个非常古老的源代码(用Red Hat编译).之前它有lua-4.0.1所以我只编译了最新的lua(lua-5.1.4)并将它安装在与旧的相同的目录中.实现不是很大,所以除了一些函数名称之外没什么可改变的,我必须包含"lauxlib.h"才能让它编译.它编译没有任何问题,但它给出了这些链接错误.

/usr/local/lib/liblua.a(loadlib.o): In function `ll_load':
loadlib.o(.text+0x19): undefined reference to `dlopen'
loadlib.o(.text+0x2a): undefined reference to `dlerror'
/usr/local/lib/liblua.a(loadlib.o): In function `ll_sym':
loadlib.o(.text+0x52): undefined reference to `dlsym'
loadlib.o(.text+0x63): undefined reference to `dlerror'
/usr/local/lib/liblua.a(loadlib.o): In function `ll_unloadlib':
loadlib.o(.text+0x8): undefined reference to `dlclose'
Run Code Online (Sandbox Code Playgroud)

基本上所有路径都是正确的,但我使用与旧编译器相同的标志,我根本没有更改makefile.

-static -lpthread -lnsl -lutil -ldl -lmysqlclient -llua -llualib -lz -lcppunit
Run Code Online (Sandbox Code Playgroud)

ldl标志已经存在.

我只想知道要尝试的事情.一切都很受欢迎.这让我疯了.

Rud*_*udi 5

放置-ldl在班轮命令的末尾.订单很重要.

链接器仅在libs中搜索满足未引用符号的库,这些库在命令行上更加正确.你的新人liblua.a现在dlopen和朋友一起使用,而老人则没有.由于-ldl剩下的-llua,连接器不使用libdl链接的LUA引用.