今天在编译一个 Lua C 模块的时候,没有什么毛病。但是在直接用解释器执行的时候,出现了问题,lua: multiple Lua VMs detected 通过搜索引擎来看,这是因为链接了静态库,而 Lua 解释器也链接了静态库,因此会出现多个 VM 的情况。需要做一下改进才行。
Lua 动态库编译
默认情况下,Lua 内带了静态库和 Lua 可执行程序解释器的编译脚本,但是没有动态库的,因此需要进行手动添加规则:
我从这里看到了别人的解决方案:
LUA_SO=liblua.so |
实则是将 Lua 的核心代码和 Lib 的核心代码编译成动态库,而排除了解释器的代码。
另外需要注意的是,默认静态库不是位置无关代码,因此需要在编译器选项加上 -fPIC
才行
C 模块编译
这个没啥好说的,-shared 就行了