[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Mac OS X dynamic loading and Lua5.0.2
- From: Peter Colson <pcolson@...>
- Date: Wed, 23 Mar 2005 11:52:52 +1100
On 22/03/2005, at 9:37 PM, Mike Pall wrote:
Hi,
PA wrote:
Mike Pall provided the following incantation to compile modules on Mac
OS X:
local CompileCommand = "gcc -O2 -fno-common -c -o"
local LinkCommand = "gcc -bundle -undefined dynamic_lookup -o"
Works like a charm.
Yes, but on Lua 5.1 only!
The original posting asked about Lua 5.0.2. But this one doesn't have
any
support for Mac OS X. You need to patch it. Look into src/lib/loadlib.c
at the bottom. However this patch requires you to compile your modules
as dylibs (and not as bundles).
I'm quite happy to go to 5.1 since it offers better OS X support. I'm
using Lua under OS X more as a quick test/prototype environ for another
platform.
Tried making 5.1 (work5) and this line:
gcc -o lua lua.o -L. -llua -llualib -lm -ldl -Wl,-E
fails with OS X ld not supporting the '-E' flag. Any hints as to what
might work? I'll keep looking at this end, but I'm also learning the
ropes with OS X build procedures as well.
Peter Colson wrote:
So far I keep getting a Nil return from loadlib.
The second return value should tell you what went wrong. Try:
lua -e 'print(loadlib("xyz.so", "_luaopen_xyz"))'
For Lua 5.0.2 "xyz.so" has to be in the current dir.
Tried this under 5.0.2 and it said 'loadlib not supported'. That makes
sense. Then tried it on what I think was an old version of my test
dylib using Lua5.1 libs that had been built without the ld '-E' param
and it actually got into the luaopen_test (once I added '_' to the func
name) before failing with a segmentation fault. Rebuilding my test
module and linking to the new Lua5.1 libs produced heaps of undefined
symbols which I think is due to removing '-E' and not adding the
correct OS X options. Also had to re-ranlib the Lua5.1 libs according
to another message that appeared.
With Lua 5.1 you should use require("xyz") and put the module into the
proper path ( /usr/local/lib/lua/5.1/xyz.so ).
Under OS X is the extension typically ',dylib' or '.so' or doesn't it
really matter?
Regards,
Peter Colson.