首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我运行解释语言二进制及其脚本时,如何检查哪些共享库是链接的?

当我运行解释语言二进制及其脚本时,如何检查哪些共享库是链接的?
EN

Stack Overflow用户
提问于 2016-11-28 17:30:44
回答 2查看 1.8K关注 0票数 2

我正在寻找每个实际需要运行lua脚本所需的库,该脚本需要火炬库。

test.lua

代码语言:javascript
复制
#!/usr/bin/env lua

print "Welcome to LUA"
print('_VERSION = ' .. _VERSION)
require("nn") -- this loads torch nn libraries to be further used in the code
print "Load pass"

输出

代码语言:javascript
复制
Welcome to LUA
_VERSION = Lua 5.1
Load pass

当我用

代码语言:javascript
复制
lld ./lua
# or
lld ./lua test.lua

我得到以下输出:

代码语言:javascript
复制
ldd ./lua ../../../bin/test.lua
    linux-vdso.so.1 =>  (0x00007ffdba77d000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f160dd3e000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f160db3a000)
    libreadline.so.6 => /lib/x86_64-linux-gnu/libreadline.so.6 (0x00007f160d8f3000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f160d52a000)
    /lib64/ld-linux-x86-64.so.2 (0x00005580e2ebd000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f160d301000)
../../../bin/test.lua:
    not a dynamic executable

显然,torch nn使用的库不在这里显示。我们只看到"lua“程序所需的库。

如果使test.lua成为一个可执行文件,并且运行ldd ./test.lua,则得到以下输出

代码语言:javascript
复制
ldd ./test.lua 
    not a dynamic executable

当我运行解释语言二进制及其脚本时,如何检查链接了哪些库(或.so)?(在Lua和Python中)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-28 18:37:19

您可以使用LD_DEBUG

代码语言:javascript
复制
$ LD_DEBUG=all python tmp.py 2>&1 | grep 'generating link map'
3358:   file=libpthread.so.0 [0];  generating link map
3358:   file=libc.so.6 [0];  generating link map
3358:   file=libdl.so.2 [0];  generating link map
3358:   file=libutil.so.1 [0];  generating link map
3358:   file=libz.so.1 [0];  generating link map
3358:   file=libm.so.6 [0];  generating link map

请记住,如果应用程序只在特定事件上加载库,则在默认运行期间可能看不到它。

票数 5
EN

Stack Overflow用户

发布于 2016-11-28 17:41:38

很可能Lua正在动态加载nn。它在nn中寻找LUA_CPATHpackage.cpath

找到需要哪些库的一种方法是重新定义require

代码语言:javascript
复制
local real_require=require
function require(x)
    print(x,package.searchpath(x,package.cpath))
    return real_require(x)
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40850187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档