2

我设法为 Palm webOS 编译了 Lua 5.1.4,现在我正在尝试编写一个扩展来使用来自 Lua 的 webOS 服务。但是,当我尝试加载我的库时,Lua 报告:

undefined symbol: lua_pushlstring

这是我的代码:

#define LUA_LIB
#include "lua.h"
#include "lauxlib.h"

static int hellopalm(lua_State *L) {
    lua_pushliteral(L, "Hello, Palm!");
    return 1;
}

static const luaL_reg palmlib[] = {
    { "hellopalm", hellopalm },
    { NULL, NULL }
};

LUALIB_API int luaopen_palm(lua_State *L) {
    luaL_register(L, "palm", palmlib);
    return 1;
}

这是我的Makefile:

LUADIR= ../lua-5.1.4/lua-webos
CC= arm-none-linux-gnueabi-gcc
CFLAGS= -O2 -Wall -shared -nostdlib -mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp
INCLUDES= -I$(LUADIR)/include
RM= rm -f

LIBNAME= palmlib.so
SOURCES= palmlib.c

default: $(LIBNAME)

clean:
    $(RM) $(LIBNAME)

$(LIBNAME): palmlib.c
    $(CC) $(CFLAGS) $(INCLUDES) $(SOURCES) -o $@

我知道lua_pushliteral这只是一个调用的宏lua_pushlstring,所以这就是错误的来源。这些push_*变体似乎都不起作用。我怀疑我的 Makefile 有问题。

有任何想法吗?

4

1 回答 1

2

构建 Lua 解释器时需要导出 Lua API 符号。在 Linux 中,gcc 的标志是 -Wl,-E;也许这也适用于您的平台。

于 2010-06-24T07:20:01.457 回答