2016-06-28 80 views
3

我最终的目标是在DSM 6.0.1-7393 Update 1的Synology DiskStation DS1813 +上安装Nagios。但我甚至无法开始编译软件包。 。Synology DSM6 - libc.so.6 - 文件格式无法识别

当我尝试使用GCC我的Synology DiskStation上我总是得到以下错误消息:

$ gcc hello.c -o hello.o 
/lib/libc.so.6: file not recognized: File format not recognized 
collect2: ld returned 1 exit status 

这里是我的shell环境。我试过用不同的LD_LIBRARY_PATH设置,但是即使省略它也没有什么区别。

$ env 
TERM=xterm-256color 
SHELL=/bin/sh 
SSH_CLIENT=192.168.2.110 51079 22 
OLDPWD=/var/services/homes/egi 
SSH_TTY=/dev/pts/7 
LC_ALL=en_US.utf8 
USER=egi 
LD_LIBRARY_PATH=/opt/lib: 
PAGER=more 
MAIL=/var/mail/egi 
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin 
PWD=/var/services/homes/egi/exer 
LANG=en_US.utf8 
PS1=[\[email protected]\h \W]$ 
SHLVL=1 
HOME=/var/services/homes/egi 
TERMINFO=/usr/share/terminfo 
LOGNAME=shunyam 
SSH_CONNECTION=xxx.xxx.xxx.xxx 51079 yyy.yyy.yyy.yyy 22 
PGDATA=/var/services/pgsql 
CC=gcc 
_=/opt/bin/env 

编译器已经安装了的ipkg及其规格如下所示:

$ gcc --verbose 
Using built-in specs. 
Target: i686-linux-gnu 
Configured with: ../gcc-4.2.1/configure --build=i386-pc-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu --prefix=/opt --disable-nls --disable-static --with-as=/home/slug/optware/syno-i686/toolchain/gcc-4.2.1-glibc-2.3.6/i686-linux-gnu/bin/i686-linux-gnu-as --with-ld=/home/slug/optware/syno-i686/toolchain/gcc-4.2.1-glibc-2.3.6/i686-linux-gnu/bin/i686-linux-gnu-ld --enable-languages=c,c++ --disable-multilib 
Thread model: posix 
gcc version 4.2.1 

导致问题库返回此信息:

$ /lib/libc.so.6 
GNU C Library (crosstool-NG 1.20.0) stable release version 2.20-2014.11, by Roland McGrath et al. 
Copyright (C) 2014 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. 
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 
Compiled by GNU CC version 4.9.3 20150311 (prerelease). 
Available extensions: 
    crypt add-on version 2.1 by Michael Glad and others 
    GNU Libidn by Simon Josefsson 
    Native POSIX Threads Library by Ulrich Drepper et al 
    BIND-8.2.3-T5B 
libc ABIs: UNIQUE IFUNC 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/libc/bugs.html>. 

还有/opt/lib/libc.so上的链接描述文件:

$ cat /opt/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-i386) 
GROUP (/lib/libc.so.6 /opt/lib/libc_nonshared.a) 

图书馆实际上不能被打破,否则什么都不会。

gcc所有其他所需的软件包也已安装ipkg

奇怪的是,我似乎是唯一有这个问题的人,因为我没有在Google上找到相关帖子。 Synology的支持告诉我,他们不支持安装命令行命令包。

大约两年前,当我第一次在此DiskStation上安装gcc时,一切正常。几个月前我已经注意到这个问题(可能在DSM更新之后)。

有没有人也遇到过这个问题,或有线索如何让它再次工作?谢谢!

+0

什么'file -L/lib/libc.so.6'打印? –

+0

'$ file -L /lib/libc.so.6 /lib/libc.so.6:ELF 64位LSB共享对象,x86-64,版本1(GNU/Linux),动态链接(使用共享库),对于GNU/Linux 2.6.32,已删除 分段错误# – Gfy

回答

3

我有这个完全相同的问题。海湾合作委员会使用工作,现在与DSM 6.1打破。我认为这是在他们转换到64位DSM 6.0后,我相信。你的问题实际上给了我答案,所以我想在这里分享。我在文件/opt/lib/libc.so中将/lib/libc.so.6更改为/lib32/libc.so.6

$ cat /opt/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-i386) 
GROUP (/lib32/libc.so.6 /opt/lib/libc_nonshared.a) 

使编译我的测试文件,而无需设置,就像你所期望的一个正常的Linux系统上的任何环境变量以上Optware公司GCC变更后。

+0

哇,那岩石!这正是我所期待的。现在让我们只希望,这不会破坏系统中某处的其他东西...... ;-) –

+0

它不应该是/ opt只用于软件,而且软件也都是32位,所以如果有什么可能会修复其他问题。虽然你永远不知道。自从我在几个月前做出此更改以来,我没有遇到任何问题:-) – Eric

0

它看起来像我一直在使用一些其他的G ++:

/volume1/homes/user/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-g++ 

它来自这个文件:gcc473_glibc217_x86_64_cedarview-GPL.tgz

其他人在使用DSM 6时也有问题:https://forum.synology.com/enu/viewtopic.php?t=116803 建议使用SynoCommunity的Debian Chroot Package代替。

+0

感谢您在Debian Chroot轨道中设置我!这实际上也解决了我的其他一些问题!对不起,这么晚回复,我的注意力在其他地方... –