2016-06-28 32 views
3

Mein letztes Ziel ist es, Nagios auf meiner Synology DiskStation DS1813 + mit DSM 6.0.1-7393 Update 1 zu installieren. Aber ich kann nicht einmal mit der Kompilierung des Pakets beginnen. .Synology DSM6 - libc.so.6 - Dateiformat nicht erkannt

Wenn ich versuche, erhalte ich die folgende Fehlermeldung immer gcc auf meiner Synology Diskstation zu verwenden:

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

meine Shell-Umgebung hier. Ich habe es mit verschiedenen LD_LIBRARY_PATH Einstellungen versucht, aber sogar das Unterlassen es macht keinen Unterschied.

$ 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 

Der Compiler wurde mit ipkg und die Spezifikationen wie folgt aussehen installiert:

$ 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 

Die Bibliothek, die das Problem gibt diese Informationen verursacht:

$ /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>. 

Es ist auch ein Linker-Skript unter /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) 

Die Bibliothek kann nicht wirklich zerbrochen werden, sonst würde nichts funktionieren.

Neben mit gcc alle anderen erforderlichen Pakete sind auch mit ipkg installiert.

Seltsamerweise scheine ich die einzige Person mit diesem Problem zu sein, da ich keine relevanten Beiträge auf Google gefunden habe. Die Unterstützung von Synology hat mir gesagt, dass sie keine Befehlszeilenpakete installieren.

Als ich vor zwei Jahren das erste Mal gcc auf dieser Diskstation installiert habe, hat alles gut funktioniert. Ich habe dieses Problem vor ein paar Monaten bemerkt (wahrscheinlich nach einem DSM-Update).

Ist auch jemand auf dieses Problem gestoßen oder hat eine Ahnung, wie es wieder funktioniert? Vielen Dank!

+0

Was wird 'Datei -L/lib/libc.so.6' gedruckt? –

+0

'$ Datei -L /lib/libc.so.6 /lib/libc.so.6: ELF 64-Bit-LSB freigegebenes Objekt, x86-64, Version 1 (GNU/Linux), dynamisch verknüpft (verwendet gemeinsame libs), für GNU/Linux 2.6.32, entfernt Segmentierungsfehler' – Gfy

Antwort

3

Ich hatte genau das gleiche Problem. GCC verwenden, um zu arbeiten und jetzt mit DSM 6.1 brach es. Ich denke, es ist nach dem Wechsel zu 64-Bit mit DSM 6.0 glaube ich. Deine Frage hat mir tatsächlich die Antwort gegeben, also wollte ich es hier teilen. Ich habe /lib/libc.so.6 zu /lib32/libc.so.6 in der Datei /opt/lib/libc.so geändert.

$ 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) 

Nach Änderung oben Optware GCC meine Testdatei Variablen ohne Umgebung zusammengestellten Satz genau wie Sie auf einem normalen Linux-System erwarten würde.

+0

Wow, das rockt! Genau das habe ich gesucht. Nun lass uns nur hoffen, dass das irgendwo irgendwo im System nichts kaputt macht ... ;-) –

+0

Es sollte nicht seit/opt nur von optware verwendet werden und auch optware ist alles 32-bit also wenn irgendwas das beheben könnte andere Probleme. Obwohl du nie weißt. Ich hatte kein einziges Problem, seit ich diese Änderung vor ein paar Monaten vorgenommen habe :-) – Eric

0

Es sieht aus wie ich habe einige andere g wurden mit ++:

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

Aus dieser Datei kam: gcc473_glibc217_x86_64_cedarview-GPL.tgz.

Andere Leute haben auch Probleme mit DSM 6: https://forum.synology.com/enu/viewtopic.php?t=116803 Es wird empfohlen, stattdessen das Debian Chroot Paket von SynoCommunity zu verwenden.

+0

Danke, dass Sie mich in den Debian Chroot Track gesetzt haben! Dies löst auch einige meiner anderen Probleme! Entschuldigung für die Antwort so spät, meine Aufmerksamkeit war woanders ... –