一:链接一个lua模块
1.编辑foo.lua文件
local _M = {}function _M.go()
print("Hello from foo")
end
return _M
2.编译foo.lua文件生成foo.o文件
luajit -bg foo.lua foo.o-b .lua文件生成字节码文件.o
-g 生成的字节码文件.o做调试用,如果不用于调试可以不包含该选项
3.编译Nginx/OpenResty时使用.o文件
./configure --with-ld-opt="/path/fo/foo.o"4.使用foo.lua文件
local foo = require("foo")foo.go()
注:如果希望使用模块名:resty.foo,则源文件名为resty_foo.lua,.o文件名为resty_foo.o
编译模块文件和编译Nginx/OpenResty使用的luajit版本应该一致,否则luajit的版本之间不兼容的话,使用的时候就找不到指定的lua模块
二:链接两个lua模块
1.编辑、编译生成foo.o, bar.o
2.编译Nginx/OpenResty时使用.o文件
./configure --with-ld-opt="/path/fo/foo.o /path/fo/bar.o"
三:链接多个lua模块
1.将多个.o文件生成静态库文件
ar rcus libmyluafiles.a *.o2.编译Nginx/OpenResty时使用.a文件
./configure --with-ld-opt="-L/path/to/lib -Wl,--whole-archive -lmyluafiles -Wl,--no-whole-archive"-L 指示libmyluafiles.a所在文件路径
-Wl, 表示将后面的参数传递给链接器
--whole-archive nginx主执行模块中没有提及到该静态库文件,该静态库文件在编译的时候可能会被跳过