Configuration
All the binaries were built using Tecmake with the following configuration parameters and changes:
Lua 5.1
LuaBinaries distribution of Lua 5.1 uses the same default configuration of the makefiles provided by the Lua.org distribution tar file, but using "lua5.1" as library and program names. A small difference is that the "etc/bin2c.c" utility is re-added to the distribution.
AIX/IRIX/SunOS LUA_USE_POSIX LUA_USE_DLOPEN Linux/BSD/Cygwin LUA_USE_POSIX LUA_USE_DLOPEN LUA_USE_READLINE MacOSX LUA_USE_POSIX LUA_DL_DYLD In Windows the default configuration also enable equivalent definitions for LUA_USE_ISATTY and LUA_USE_POPEN (part of LUA_USE_POSIX). And LUA_DL_DLL is also defined. The executables contain support for command line globing (so you can use "lua5.1 *.lua").
Note: The name "lua5.1" was a decision we made at the release of LuaBinaries for Lua 5.1.0. Unfortunately it was a bad decision, but because of several applications compatibility we will keep it until Lua 5.2.0 is released.
Lua 5.0
lualib USE_TMPNAME defined in all systems.
USE_POPEN defined in non Windows systems.
USE_DLOPEN defined in non Windows systems, except AIX.luac LUA_OPNAMES defined in all systems. lua (executable) _POSIX_SOURCE defined in non Windows systems.
LUA_USERCONFIG='"$(LUA5)/etc/saconfig.c"' and USE_READLINE defined only in Linux systems.
-Wl,-E parameter used in Linux systems.
In Release 2, linked with the dynamic library in Windows, statically linked in UNIX.
Lua 4.0
lualib POPEN defined in non Windows systems. bin2c fixed a problem with C++ compilers. lua (executable) _POSIX_SOURCE defined in non Windows systems.
Lua 3.2
bin2c fixed a problem with C++ compilers.
Libraries and executables were built using speed optimization. In UNIX the dynamic libraries were NOT built with the -fpic parameter. In MacOS X the dynamic libraries are in bundle format. The source code along with the "config.mak" files for Tecmake are also available.
The DLLs were built using the cdecl calling convention. This could be a problem for Visual Basic users.
In Visual C++ 6 and 7 we use the single thread C Run Time Library for static libraries and the multi thread C RTL for DLLs. Since Visual C++ 8 both use the multi thread C RTL.
If you want to build other libraries that should be compatible with the LuaBinaries distribution then you must build them using the same configuration we use. The parameter -fpic in UNIX can be used. If you do not use Tecmake to build your own libraries then you should consult the Building Modules page written by Mike Pall about how to build C extension modules for Lua.
The library names have at least the major version number as a suffix. Except for Lua 3 because of historical reasons. So several versions of Lua can coexist in the same system, can be easily linked, and identified.
Building LuaBinaries
If you need to build the binaries yourself consider using Tecmake. It is easier to install and will make your life easier. The Tecmake configuration files (*.mak) available at the "src" folder are very easy to understand also.
In the "src" folder there are also scripts called "make_uname" that will call Tecmake to build the library and the executables. After installing Tecmake just run "make_uname". In Windows an addicional parameter specifing the compiler is needed, for ex: "make_uname vc8" or "make_uname dll8".
IDE project files and Makefiles are also included in the source code. They are not used to build the standard distribution. The IDE project files are intended for those who want to debug Lua code using the LuaBinaries configuration. We use Premake to build the IDE project files.
The standard Lua.org makefiles are still available but be aware that they do not build the dynamic libraries.
For those who build installation packages like MSI, RPM or DEB, please use the binaries from LuaBinaries, just repack them in the installation package format. Or if you want to rebuild use the same configuration and the same name standard. This will make the life of many Lua users and package developers easier. If the packaging format requires a different file name then please use the standard file and add a symbolic link with the required file name, or at least add a symbolic link with the standard file name.
For those who build Lua binaries in other platforms following the LuaBinaries standards we would be happy to redistribute your binaries in the LuaBinaries Downloads. Also installation packages using LuaBinaries are welcome to be redistributed in the LuaBinaries Downloads.
LuaBinaries 5.0.2 Release 2
LuaBinaries 5.0.2 Release 2 consists in some changes in the distribution libraries that allows easier use, deployment and maintenance of the Lua libraries. Release 2 applies only to Lua 5.0.2 and is incompatible with the LuaBinaries 5.0.2 Release 1.
Changes from LuaBinaries 5.0.2 Release 1:
- Library names now use the suffix "50".
Since there are applications that depend on the dynamic libraries of the previous release we decided to add a "0" to the prefix so we can have both versions installed in the same system without conflict.
- The two libraries now became only one library.
We put together the Lua core library and the auxiliar library. This simplifies the distribution, maintenance and use of the Lua library.
- Windows executables now use the DLL.
This allows
loadlibto load libraries that uses the same Lua library as the executable. Notice that all DLLs should be linked to theLUA50.DLLprovided with the LuaBinaries distribution for this to work. - added "/GL" parameter on vc7 build to improve optimization.
Thanks to Paul Winwood for pointing this. Previously we used the "-O2" parameter alone.
All these changes were incorporated in new releases.