Am 22.11.2013 11:39 schröbte Bernd Eggink:
On 22.11.2013 09:13, Rob Hoelz wrote:
On 11/22/13 11:06 AM, Bernd Eggink wrote:
Hi all,
I compiled Vim with Lua support and am quite happy now that I can
write Vim procedures in my favourite language. Most things work, but
there is one problem I couldn't solve. Whenever I try to require a
module (after setting package.path and package.cpath right), I get an
error message like this:
error loading module 'posix_c' from file
'/usr/lib/lua/5.2/posix_c.so':
/usr/lib/lua/5.2/posix_c.so: undefined symbol: lua_gettop
It seems that Lua has found the required module, but the module can't
access liblua.a. No idea why. Posix is just an example, the same
happens with other modules as well.
Any ideas what could be the reason and how to get around this?
package.path =
"/local/bernd/lui/?.lua;./?.lua;/local/bernd/lua/lib/?.lua;/usr/lib/lua/5.2/?.lua;/usr/share/lua/5.2/?.lua"
package.cpath="/usr/lib/lua/5.2/?.so;/usr/lib/lua/5.2/?.la;/usr/lib/lua/5.2/?.a"
You can't load static libraries (`*.a`) using `require` in Lua, so the
last entry (and probably the one before that) is useless.
Chances are
that you built Vim against Lua 5.1, and you're asking it to load 5.2
modules, which it gets upset about.
Certainly not, the only Lua I have is 5.2.
The next most likely reason is that the vim executable doesn't re-export
the Lua API functions because liblua was linked statically, and the
`-Wl,-E` flag was missing. AFAICT, linking dynamically
(`--enable-luainterp=dynamic`) should work because `RTLD_GLOBAL` is used
when loading liblua in this case ...