2016-06-28 171 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軌道中設置我!這實際上也解決了我的其他一些問題!對不起,這麼晚回覆,我的注意力在其他地方... –

相關問題