C Lua liblua5.1.so无法打开共享对象文件

C Lua liblua5.1.so无法打开共享对象文件,c,debugging,compilation,linker,lua,C,Debugging,Compilation,Linker,Lua,所以我有一个.So格式的编译过的C文件,我试图在Lua中使用它。这两个文件的代码为: -- luatest.lua: require("power") print("Enter a number: ") local num = tonumber(io.read()) local n = create(num) square(n) cube(n) nprint(n) // luatest.c compiled to power.so #include <lua.h> #incl

所以我有一个.So格式的编译过的C文件,我试图在Lua中使用它。这两个文件的代码为:

-- luatest.lua:
require("power")

print("Enter a number: ")
local num = tonumber(io.read())

local n = create(num)
square(n)
cube(n)
nprint(n)

// luatest.c compiled to power.so

#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdlib.h>

static int createStruct(lua_State *L);
static int isquare(lua_State *L);
static int icube(lua_State *L);
static int nprint(lua_State *L);

typedef struct numbers {
    float number;
    float square;
    float cube;
} numbers;

int luaopen_power(lua_State *L){
    lua_register(L, "create", createStruct);
    lua_register(L, "square", isquare);
    lua_register(L,"cube",icube);
    lua_register(L, "nprint", nprint);
    return 0;
}

static int createStruct(lua_State *L){
    // Code here
}

static int isquare(lua_State *L){              
    // Code here
}

static int icube(lua_State *L){              
    // Code here
}

static int nprint(lua_State *L){
    // Code here
}
我不确定有什么问题。/power.so应该存在

我在openSUSE 64位上遇到了这个错误,但这段代码在OSX上运行良好

任何对这一点的洞察都将是非常好的,我似乎在任何地方都找不到其他人有这个问题

我使用gcc编译它,在lua5.1中带有-l[1]标志。删除这个,它会工作

-图书馆 链接时搜索名为library的库

gcc-Wall-fPIC-shared-o-I

为使其有用,您应该添加为什么删除
-llua5.1
解决了您的问题。否则它就没有任何意义了——有人会想,你正在编译一个C lua模块,为什么不想链接到lua库?你应该将你的解决方案作为答案发布并接受它。它会将问题标记为已回答,并使解决相同问题的人更容易找到您的解决方案。
cd <directory>
lua luatest.lua
lua: error loading module 'power' from file './power.so':
liblua5.1.so: cannot open shared object file: No such file or directory
stack traceback:
[C]: ?
[C]: in function 'require'
luatest.lua:3: in main chunk
[C]: ?
gcc -Wall -fPIC -shared -o <output file name> -I<path to lua include directory> <input file name>