错误信息:

使用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)

lua加载动态库缺乏相应的系统库的更多相关文章

  1. 【转载】cocos2dx 中 Android NDK 加载动态库的问题

     原文地址:http://blog.csdn.net/sozell/article/details/10551309 cocos2dx 中 Android NDK 加载动态库的问题 闲聊 最近在接入各 ...

  2. Linux下c函数dlopen实现加载动态库so文件代码举例

    dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...

  3. LoadLibrary加载动态库失败

    [1]LoadLibrary加载动态库失败的可能原因以及解决方案: (1)dll动态库文件路径不对.此场景细分为以下几种情况: 1.1 文件路径的确错误.比如:本来欲加载的是A文件夹下的动态库a.dl ...

  4. QT常用代码之加载动态库和弹出对话框

    作者:朱金灿 来源:http://blog.csdn.net/clever101 加载动态库的代码: typedef void (*Execute)(); // 定义导出函数类型 QString st ...

  5. Windows平台LoadLibrary加载动态库搜索路径的问题

    一.背景 在给Adobe Premiere/After Effects等后期制作软件开发第三方插件的时候,我们总希望插件依赖的动态库能够脱离插件的位置,单独存储到另外一个地方.这样一方面可以与其他程序 ...

  6. QLibrary 加载动态库

    阅读本文大概需要 6.6分钟 一般情况下在没有头文件支持情况下,想要引入某个动态库,最好的办法就是使用「动态加载」的方法,在Qt中一般使用QLibyary来操作 常用 api QLibrary(con ...

  7. 使用dlopen加载动态库

    目录 概述 接口 C CMakeLists.txt src/main.c src/add.c ./dlopen_test C++ CMakeLists.txt src/main.cpp src/add ...

  8. macOS下加载动态库dylib报"code signature invalid"错误的解决办法

    一.现象描述 在macOS上搞开发也有一段时间了,也积攒了一定的经验.然而,今天在替换工程中的一个动态库时还是碰到了一个问题.原来工程中用的是一个静态库,调试时发现有问题就把它替换成了动态库.这本来没 ...

  9. C++加载动态库的形式来实现封装

    目录结构 └── test ├── CMakeLists.txt ├── base.h //设置接口 ├── drive.cpp //具体实现 └── main.cpp //test CMakeLis ...

随机推荐

  1. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  2. Android之hint提示字体大小修改,显示完全

    Android之hint提示字体大小修改,显示完全 1.工作中遇到一个问题,就是自定义EditText的hint提示在超大字体下会显示不全, 2.然后在网上搜索了一下,在这里记录一下,分享给大家,在此 ...

  3. String类和StringBuffer类的方法

    一.String类的方法 public char charAt(int index)          返回字符串index个字符 public int length()         返回字符串长 ...

  4. 日期转换时Safari中返回Invalid Date

    问题: 进行日期转换时,Safari中会返回Invalid Date, 而IE 9, Firefox, Chrome and Opera显示正常,代码如下所示: var d = new Date(&q ...

  5. 困扰我多年的Connection reset问题

    第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入方的api第一次总是报这个错,当时又没有做处理,导 ...

  6. 介绍开源的.net通信框架NetworkComms框架之九 合并DLL

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  7. 云端 Linux下安装 Java

    根据需要在给云端的机器安装Java 问题的分解为2个一个是Java源文件的传输.一个是Linux下Java的安装. Java 传输到云端: 可以通过SSH Secure File Transfer C ...

  8. hadoop运行原理之Job运行(二) Job提交及初始化

    本篇主要介绍Job从客户端提交到JobTracker及其被初始化的过程. 以WordCount为例,以前的程序都是通过JobClient.runJob()方法来提交Job,但是现在大多用Job.wai ...

  9. Android Studio项目目录结构

    在Android Studio中,提供了以下几种项目结构类型 我们一般常用的有以下两种结构: Project 结构类型 app/build/ app模块build编译输出的目录 app/build.g ...

  10. JS 信息提示弹框封装

    // 功能提示弹框 function tipsBox ( option ) { var html = ''; if ( option.type == 'success' ) { html += '&l ...