如何在运行解释语言二进制文件和其脚本时检查已链接的共享库?
2018-5-2 9:24:3
收藏:0
阅读:83
评论:2
我正在试图找到运行需要torch库的lua脚本所需的每个库
test.lua:
#!/usr/bin/env lua
print "欢迎使用LUA"
print('_VERSION = ' .. _VERSION)
require("nn") -- 这将加载torch nn库以在代码中进一步使用
print "加载通过"
输出:
欢迎使用LUA
_VERSION = Lua 5.1
加载通过
当我使用
lld ./lua
# 或者
lld ./lua test.lua
我得到以下输出:
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:
不是动态可执行文件
显然,torch nn使用的库在此处未显示。我们只看到“lua”程序所需的必要库
如果将“test.lua”文件制作为可执行文件并运行“ldd ./test.lua”,我得到以下输出
ldd ./test.lua
不是动态可执行文件
如何在运行解释语言二进制文件和其脚本时检查已链接的库(.so)?(在Lua和Python中)
点赞
用户2170527
你可以使用 LD_DEBUG:
$ 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
请记住,如果你的应用程序只在特定事件上加载库,则在默认运行期间可能看不到它。
2016-11-28 18:37:19
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

最有可能的是 Lua 在动态加载
nn。它会在LUA_CPATH或package.cpath中寻找nn。一个寻找被要求的库的方法是重新定义
require函数:local real_require=require function require(x) print(x,package.searchpath(x,package.cpath)) return real_require(x) end