错误信息:
使用lua测试lm2动态库时,加载时出现如下错误
jfyuan@jfy11-B85M-D2V:~/temp/service/soft/code/ginger_resty/cores/lm2/test$ lua lm2_test.lua ./param.txt /home/wlc/SpeechdServer/speechd-centos_6.2-x86_64-0.5.0-20140317150535/modules//lm/res/eng.pred/lm.eng.pred.sh lua: error loading module 'aicores.liblm2' from file './aicores/liblm2.so': ./aicores/liblm2.so: undefined symbol: pthread_mutexattr_destroy stack traceback: [C]: ? [C]: in function 'require' lm2_test.lua:1: in main chunk [C]: ?
而ldd时又看不见需要线程动态库
jfyuan@jfy11-B85M-D2V:~/temp/service/soft/code/ginger_resty/cores/lm2$ ldd liblm2.so linux-vdso.so.1 => (0x00007fff5cddf000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd667978000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd667671000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd66745b000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd667096000) /lib64/ld-linux-x86-64.so.2 (0x00007fd668215000)
原因可能是lua的require加载模块会对所有导出函数检查依赖库
解决办法:export LD_PRELOAD=/opt/intel/mkl/lib/intel64/libmkl_core.so:/opt/intel/mkl/lib/intel64/libmkl_sequential.so:/usr/local/lib/libiconv.so.2:/lib/x86_64-linux-gnu/libpthread.so.0
jfyuan@jfy11-B85M-D2V:~/temp/service/soft/code/ginger_resty/cores/lm2/test$ ldd aicores/liblm2.so linux-vdso.so.1 => (0x00007fffe65e6000) /opt/intel/mkl/lib/intel64/libmkl_core.so (0x00007f9c43ce4000) /opt/intel/mkl/lib/intel64/libmkl_sequential.so (0x00007f9c43645000) /usr/local/lib/libiconv.so.2 (0x00007f9c43360000) /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9c43142000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9c42e14000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9c42b0e000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9c428f8000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9c42532000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9c4232e000) /lib64/ld-linux-x86-64.so.2 (0x00007f9c45462000)
|
请发表评论