2014-09-23 116 views
-1

我想构建一个精简版的tshark 1.10.7 x86,支持lua。构建tshark 1.10.7失败luaL_openlibs

我目前使用的选项是那些:

/configure --disable-wireshark --disable-packet-editor --disable-editcap --disable-mergecap  --disable-reordercap --disable-text2pcap  --disable-dftest  --disable-randpkt  --disable-airpcap  --disable-dumpcap  --disable-rawshark --disable-ipv6 --with-gnutls=no --with-gcrypt=no --disable-glibtest --with-lua=/usr/local/lib/ 

不同的方法进行测试:

--with-lua=/usr/local 
--with-lua=/usr/local/src/lua-5.2.3 
--disable-usr-local (just in case i did miss some lua header file somewhere) 

在i设定'--with-LUA = NO它建立精细和先前使用的办法。

下面是上面的命令错误日志:

checking whether to use liblua for the Lua scripting plugin... yes 
checking Lua version... Lua 5.2 
checking lua.h usability... yes 
checking lua.h presence... yes 
checking for lua.h... yes 
checking lualib.h usability... yes 
checking lualib.h presence... yes 
checking for lualib.h... yes 
checking lauxlib.h usability... yes 
checking lauxlib.h presence... yes 
checking for lauxlib.h... yes 
checking for luaL_openlibs in -llua... no 
checking for luaL_openlibs in -llua5.2... no 
configure: error: Linking with liblua failed. 

我没有从SORCE lua.org

由于Slackware的似乎需要的readline再挂安装LUA 5.2.3的libncurses我也做了同样的用lua 5.2.3来编译正确。

make linux MYLIBS=-lncurses 

Lua中似乎至少指出了正确的版本:

# lua -v 
Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio 

这里是我的LUA文件地点:

bash-4.1# find /usr/local/include/ -iname "lu*" 
/usr/local/include/lualib.h 
/usr/local/include/lua.hpp 
/usr/local/include/lua.h 
/usr/local/include/luaconf.h 
bash-4.1# find /usr/local/bin/ -iname "lu*" 
/usr/local/bin/luac 
/usr/local/bin/lua 
bash-4.1# ls /usr/local/lib/liblua* 
/usr/local/lib/liblua.a 

安装本身是从/ usr /本地做/ src/lua-5.2.3/

我尝试了不同的includedirs,在那里我检查了头文件,删除lua再次,重新安装slackware 13.37,但它似乎仍然失败了相同的价值。

谷歌没有给我看几个与我的问题不符的链接。 与ask.wireshark lua 可能的相关链接没有解决问题,因为它可能是一个构建错误。

不同的搜索字符串大多数似乎链接到缺少头文件,lua丢失或readline问题,我认为我已经排除了问题。

基础上的意见,我做了一些进一步的原因(尚未完成)

中的config.log的输出清楚地显示了lualib.h lua.h在那里。

这里是在我看来,相关部分:

configure:31529: checking for luaL_openlibs in -llua                                                                 
configure:31554: gcc -o conftest -g -O2 -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wpointer-arith -Wno-pointer-sign -Warray-bounds -Wcast-align -Wformat-security -Wold-style-definition -Wstrict-prototypes -Wjump-misses-init -Wvla -Waddress -Warray-bounds -Wattributes -Wdiv-by-zero -Wignored-qualifiers -Wpragmas -Wno-overlength-strings -Wwrite-strings -Wno-long-long -Wc++-compat -Wshadow -Wlogical-op -fexcess-precision=fast -fvisibility=hidden -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DG_DISABLE_SINGLE_INCLUDES -D_FORTIFY_SOURCE=0 -I/usr/local/include -I/usr/include -I/usr/local/lib//include -Wl,--as-needed -L/usr/local/lib -L/usr/local/lib//lib conftest.c -llua -lz -L/usr/local/lib//lib -llua -lm -lm >&5                                              
conftest.c:63:1: warning: function declaration isn't a prototype                                                              
conftest.c:65:1: warning: function declaration isn't a prototype                                                              
conftest.c: In function 'main':                                                                       
conftest.c:65:1: warning: old-style function definition                                                                 
/usr/local/lib/liblua.a(loadlib.o): In function `ll_loadfunc':                                                               
loadlib.c:(.text+0x7f7): undefined reference to `dlsym'                                                                 
loadlib.c:(.text+0x857): undefined reference to `dlopen' 
loadlib.c:(.text+0x8d1): undefined reference to `dlerror' 
loadlib.c:(.text+0x901): undefined reference to `dlerror' 
/usr/local/lib/liblua.a(loadlib.o): In function `gctm': 
loadlib.c:(.text+0xb78): undefined reference to `dlclose' 
collect2: ld returned 1 exit status 
configure:31554: $? = 1 
configure: failed program was: 
| /* confdefs.h */ 
| #define PACKAGE_NAME "wireshark" 
| #define PACKAGE_TARNAME "wireshark" 
| #define PACKAGE_VERSION "1.10.7" 
| #define PACKAGE_STRING "wireshark 1.10.7" 
| #define PACKAGE_BUGREPORT "http://bugs.wireshark.org/" 
| #define PACKAGE_URL "http://www.wireshark.org/" 
| #define PACKAGE "wireshark" 
| #define VERSION "1.10.7" 
| #define VERSION_MAJOR 1 
| #define VERSION_MINOR 10 
| #define VERSION_MICRO 7 
| #define STDC_HEADERS 1 
| #define HAVE_SYS_TYPES_H 1 
| #define HAVE_SYS_STAT_H 1 
| #define HAVE_STDLIB_H 1 
| #define HAVE_STRING_H 1 
| #define HAVE_MEMORY_H 1 
| #define HAVE_STRINGS_H 1 
| #define HAVE_INTTYPES_H 1 
| #define HAVE_STDINT_H 1 
| #define HAVE_UNISTD_H 1 
| #define HAVE_DLFCN_H 1 
| #define LT_OBJDIR ".libs/" 
| #define YYTEXT_POINTER 1 
| #define HTML_VIEWER "mozilla" 
| #define _FILE_OFFSET_BITS 64 
| #define HAVE_NL80211 1 
| #define HAVE_NL80211_CMD_SET_CHANNEL 1 
| #define _U_ __attribute__((unused)) 
| #define DATAFILE_DIR "/usr/local/share/wireshark" 
| #define DOC_DIR "/usr/local/share/doc/wireshark" 
| #define HAVE_GLIB_PRINTF_GROUPING 1 
| #define HAVE_LIBPCAP 1 
| #define HAVE_PCAP_OPEN_DEAD 1 
| #define HAVE_PCAP_FREECODE 1 
| #define HAVE_PCAP_BREAKLOOP 1 
| #define HAVE_PCAP_FINDALLDEVS 1 
| #define HAVE_PCAP_DATALINK_VAL_TO_NAME 1 
| #define HAVE_PCAP_DATALINK_NAME_TO_VAL 1 
| #define HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION 1 
| #define HAVE_PCAP_LIST_DATALINKS 1 
| #define HAVE_PCAP_SET_DATALINK 1 
| #define HAVE_PCAP_LIB_VERSION 1 
| #define HAVE_PCAP_GET_SELECTABLE_FD 1 
| #define HAVE_PCAP_FREE_DATALINKS 1 
| #define HAVE_PCAP_CREATE 1 
| #define HAVE_BPF_IMAGE 1 
| #define PCAP_NG_DEFAULT 1 
| #define HAVE_LIBZ 1 
| #define HAVE_INFLATEPRIME 1 
| #define HAVE_LUA_H 1 
| #define HAVE_LUALIB_H 1 
| #define HAVE_LAUXLIB_H 1 
| /* end confdefs.h. */ 
| 
| /* Override any GCC internal prototype to avoid an error. 
| Use char because int might match the return type of a GCC 
| builtin and then its argument prototype would still apply. */ 
| #ifdef __cplusplus 
| extern "C" 
| #endif 
| char luaL_openlibs(); 
| int 
| main() 
| { 
| return luaL_openlibs(); 
| ; 
| return 0; 
| } 
configure:31563: result: no 

我现在会读多一点了解警告和解决这些问题。

+0

试试'--with-lua =/usr/local'。 – siffiejoe 2014-09-23 12:15:09

+0

把路径lua源文件 – hjpotter92 2014-09-23 12:28:19

+0

谢谢你的意见。 --with-lua =/usr/local没有帮助。你也应该加上'/ usr/local/lib/liblua.a'(和'--with-lua =/lua =/usr/local/src/lua-5.2.3 – 2014-09-23 13:04:19

回答

0

在sifflejoe的帮助下,我能够追踪到libdl检测没有完全正常工作。

LDFLAGS="-ldl" ./configure --disable-wireshark --disable-packet-editor --disable-editcap --disable-mergecap  --disable-reordercap --disable-text2pcap  --disable-dftest  --disable-randpkt  --disable-airpcap  --disable-dumpcap  --disable-rawshark --disable-ipv6 --with-gnutls=no --with-gcrypt=no --disable-glibtest --with-lua=/usr/local/lib/ 

的确解决了我们的问题。