我在C中編寫了一個小的Lua模塊,它生成了一個利用libuuid的UUID。您可以在https://github.com/Mashape/lua-uuid執行應用程序時找不到libuuid庫,儘管它編譯完美
找到源文件該庫在OSX和CentOS上正常工作。我目前有Ubuntu的一個問題,雖然庫編譯成功,執行它拋出以下異常:
lua: error loading module 'lua_uuid' from file './lua_uuid.so':
./lua_uuid.so: undefined symbol: uuid_generate
stack traceback:
[C]: ?
[C]: in function 'require'
/test.lua:1: in main chunk
[C]: ?
好像圖書館找不到libuuid依賴,雖然在Makefile包括-luuid
標誌(https://github.com/Mashape/lua-uuid/blob/master/Makefile#L4)。
複製的問題,這些都是需要的相關性:
apt-get install lua5.1 luarocks unzip git make gcc uuid-dev
wget https://github.com/Mashape/lua-uuid/archive/0.1-7.zip -O /tmp/lua_uuid.zip
unzip /tmp/lua_uuid.zip -d /tmp
cd /tmp/lua-uuid-0.1-7/ && luarocks make lua_uuid-0.1-7.rockspec
然後你可以運行下面的Lua腳本:
local uuid = require "lua_uuid"
local uuid_str = uuid()
print("New UUID: "..uuid_str)
我不精通C和Makefile文件,是有什麼顯然我失蹤了?
我怎麼看不到,即使編譯。我會期望'lua_uuid.so'目標在符號上失敗。也爲了不實際生成共享對象。 –
Luarocks會自動填充'LUA_INCDIR'嗎?或者你在你的環境中有嗎? LIBFLAG呢? –
@EtanReisner是的,luarocks自動填充這些變量:https://github.com/Mashape/lua-uuid/blob/master/lua_uuid-0.1-7.rockspec#L20-L28 – Mark