我目前正试图让python在我的NAS上运行,这是一个Zyxel NSA325。
我成功地实现了python2.7和pip的运行,并且成功地安装了带pip的监视狗模块。我跟踪这些指示让python和pip运行。
当我运行使用看门狗模块的python脚本时,我会得到一个weir错误,很难。
/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
,结果是:
/* 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文件中有链接器脚本?是那么回事吗?我怎么才能修好它?
系统信息:
# uname -a
Linux NSA325-v2 2.6.31.8 #2 Fri Jun 23 11:03:47 CST 2017 armv5tel GNU/Linux
发布于 2017-11-11 23:24:58
当您看到一个名为.so
的文件时,它不一定是一个共享库。这些文件在构建时(而不是运行时)链接程序时使用;它们通常是指向真正共享库的符号链接,但至少在使用GNU ld
的系统中,它们也可以是链接器脚本,这是完全可以的。如果您查看一个现代的基于glibc的系统,您会发现libc.so
也是一个链接脚本。
这并不能解释为什么Python (或看门狗模块)正在寻找libc.so
而不是libc.so.0
.它可能是Python解释器的错误配置,也可能是看门狗模块中的无效假设。我将在今天晚些时候看一看后者,如果是前者,你最好在你的问题中所链接的论坛上询问。
https://unix.stackexchange.com/questions/403967
复制相似问题