lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Sat, 2011-03-05 at 01:30 -0800, Robert G. Jakabosky wrote:
> On Saturday 05, Vasiliy G Tolstov wrote:
> > On Sat, 2011-03-05 at 02:48 -0600, Jeff Pohlmeyer wrote:
> > > On Sat, Mar 5, 2011 at 2:10 AM, Vasiliy G Tolstov wrote:
> > > > I'm try to static link lua with my app
> > > > 
> > > > Linking brings warning. How can I avoid this and what it mean for me if
> > > > i want to build fully static binary, that can be running inside initrd
> > > > with no libraries?
> > > > 
> > > > warning: Using 'dlopen' in statically linked applications requires at
> > > > runtime the shared libraries from the glibc version used for linking
> > > 
> > > Does your application need to load any C modules at runtime?
> > > If not, maybe you could build your own Lua lib without it.
> > > 
> > > Something like this:
> > > 
> > > cd /path/to/lua-5.1.4/src
> > > 
> > > make clean ansi CFLAGS='-ULUA_DL_DLOPEN'
> > > 
> > > cd /path/to/your/app
> > > 
> > > cc -std=c99 -O0 -ggdb -static  -static-libgcc -o embed embed.c \
> > > -I/usr/include/lua5.1 -L/usr/lib64  /path/to/lua-5.1.4/src/liblua.a -lm
> > > -lc
> > > 
> > > (Note that I removed -llua5.1 and -ldl from the compiler command)
> > > 
> > >  - Jeff
> > 
> > Thank You. But if my application can load shared libraries static
> > linking is not allowed?
> 
> Lua C modules need to resolve symbols to the Lua C API (dynamically at 
> runtime).  If you statically compile/link your whole program, then those 
> symbols will not be available to the dynamic linker.
> 
> So basically you can't dynamically load Lua C modules into a statically 
> compiled program.
> 
> You can statically compile some C modules into your program and preload them 
> (take a look at src/linit.c).
> 

Hmm. Very Thanks. I'm try this. 

-- 
Vasiliy G Tolstov <v.tolstov@selfip.ru>
Selfip.Ru