2

私はなんとかPalmwebOS用にLua5.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インタープリターをビルドするときに、LuaAPIシンボルをエクスポートする必要があります。Linuxでは、gccのフラグは-Wl、-Eです。おそらくこれはあなたのプラットフォームでも機能します。

于 2010-06-24T07:20:01.457 に答える