Lua is powerful. It’s so small that some “advanced” features require 3rd party libraries.
I want to operate high precision integer, which Lua doesn’t provide.
I got lbn at http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/. lbn requires openssl only.
Download and unarchive it.
Edit Makefile to have correct environment vars, LUA, LUAINC, LUALIB, LUABIN. I installed Lua by homebrew, so the path is
LUA= /usr/local/Cellar/lua/5.1.4 LUAINC= $(LUA)/include LUALIB= $(LUA)/lib LUABIN= $(LUA)/bin
If Lua is compiled by self, use
LUA= /path/to/lua-5.1.4 LUAINC= $(LUA)/src LUALIB= $(LUA)/src LUABIN= $(LUA)/src
But, I got the error
Undefined symbols for architecture x86_64: "_luaL_newmetatable", referenced from: _luaopen_bn in lbn.o "_lua_setfield", referenced from: _luaopen_bn in lbn.o "_luaL_register", referenced from: _luaopen_bn in lbn.o …
But the Lua library is already compiled by x86_64
$ file liblua.5.1.4.dylib liblua.5.1.4.dylib: Mach-O 64-bit dynamically linked shared library x86_64
The problem is the library is not used during compilation. (LUALIB is not used anywhere)
The solution is changing these lines in Makefile
$T: $(OBJS) $(MAKESO) -o $@ $(OBJS) -lcrypto
$T: $(OBJS) $(MAKESO) -o $@ $(OBJS) -lcrypto -L$(LUALIB) -llua
And it just works.
Notice: It works in Lua 5.1.4 now, and it should work in Lua 5.2, but some effort need to be made. (Lua 5.2 deprecated some API as I see)