2010-06-24 19 views
2

我設法爲Palm webOS編譯Lua 5.1.4,現在我正在嘗試編寫一個擴展來使用來自Lua的webOS服務。但是,當我嘗試加載我的圖書館,Lua的報道:爲什麼Lua報告lua_pushlstring是未定義的?

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 [email protected] 

我知道lua_pushliteral僅僅是一個宏調用lua_pushlstring,這就是錯誤來自的地方。 push_*變體似乎根本沒有工作。我懷疑我的Makefile有問題。

任何想法?

回答

2

當您構建Lua解釋器時,您需要導出Lua API符號。在Linux中,gcc的標誌是-Wl,-E;也許這也適用於你的平臺。

+0

WebOS基於Linux,所以這個技巧!謝謝! – 2010-06-24 14:41:18

+2

就這樣我們知道:在構建Lua的時候,WebOS中的''linux是否可以運行? – lhf 2010-06-24 17:20:54