首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >.so文件中的链接器脚本?(libc.so)是这样吗?

.so文件中的链接器脚本?(libc.so)是这样吗?
EN

Unix & Linux用户
提问于 2017-11-11 16:00:20
回答 1查看 3.6K关注 0票数 15

我目前正试图让python在我的NAS上运行,这是一个Zyxel NSA325。

我成功地实现了python2.7和pip的运行,并且成功地安装了带pip的监视狗模块。我跟踪这些指示让python和pip运行。

当我运行使用看门狗模块的python脚本时,我会得到一个weir错误,很难。

代码语言:javascript
运行
AI代码解释
复制
/usr/local/zy-pkgs/ffproot/ffp/bin/python2.7: '/ffp/lib/libc.so' is not an ELF file

我在谷歌上搜索了ELF文件的头文件应该是什么样子,显然,它以7f 45 4c 46开头,它被翻译成.ELF。所以我做了一个快速的cat /ffp/lib/libc.so,结果是:

代码语言:javascript
运行
AI代码解释
复制
/* GNU ld script
 * Use the shared library, but some functions are only in
 * the static library, so try that secondarily. */
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
         "elf32-littlearm")
GROUP ( libc.so.0 uclibc_nonshared.a AS_NEEDED ( ld-uClibc.so.0 ) )

显然这不是ELF文件。因此,我花了更多的时间研究,我认为这是一个链接器脚本

但现在我没有主意了。为什么.so文件中有链接器脚本?是那么回事吗?我怎么才能修好它?

系统信息:

代码语言:javascript
运行
AI代码解释
复制
# uname -a
Linux NSA325-v2 2.6.31.8 #2 Fri Jun 23 11:03:47 CST 2017 armv5tel GNU/Linux
EN

回答 1

Unix & Linux用户

发布于 2017-11-11 23:24:58

当您看到一个名为.so的文件时,它不一定是一个共享库。这些文件在构建时(而不是运行时)链接程序时使用;它们通常是指向真正共享库的符号链接,但至少在使用GNU ld的系统中,它们也可以是链接器脚本,这是完全可以的。如果您查看一个现代的基于glibc的系统,您会发现libc.so也是一个链接脚本。

这并不能解释为什么Python (或看门狗模块)正在寻找libc.so而不是libc.so.0.它可能是Python解释器的错误配置,也可能是看门狗模块中的无效假设。我将在今天晚些时候看一看后者,如果是前者,你最好在你的问题中所链接的论坛上询问。

票数 17
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/403967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文