[HowTo] Airprint mit aktuellen Gutenprint Treibern

Status
Für weitere Antworten geschlossen.

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
Link zum akt. Wikibeitrag

Anlass:

- Syno Cups besitzt keine Web-GUI zum Einrichten der Drucker (Blattgröße, Druckqualität etc.)
- die Syno-Gutenprint-Version mit den Drucker-Treibern ist veraltet - mein Drucker wird nicht unterstützt (Canon Pixma MP970)
die aktuelle Druckerliste: http://gimp-print.sourceforge.net/p_Supported_Printers.php
- Drucken vom Ipad mit Airprint (auf bisher nicht unterstützten Drucker)
- Drucker ist über das WLAN an die Syno angeschlossenen

Hardware:
Syno DS 212+
Canon Pixma MP970

für HP Drucker google nach HPLIP

ich habe das Tutorial an einer sauberen Synology durchgetestet (DSM 4.0-2228, mit leerem /opt Pfad)
es müsste nachvollziehbar sein

ich habe nicht alles formatiert, ein > bedeutet:
> shell eingabe


zur Vorbereitung erst einmal Optware Installieren
Anleitung für Deine Syno:
http://www.synology-wiki.de/index.php/IPKG

weiter als root
> ipkg install sudo

mit visudo (vi editor, Bedienung I, esc, :wq) ergänze nach root ALL=(ALL) ALL
> visudo
admin ALL=(ALL) ALL

ggf Syno Startscript anpassen
/usr/local/etc/rc.d/Optware.sh

root ausloggen

jetzt als admin einloggen (ssh)

Pfad kontrollieren
> export PATH=/opt/bin:/opt/sbin:$PATH
> echo $PATH
/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Entwicklungsumgebung
> sudo ipkg update
> sudo ipkg install gcc nano
> sudo ipkg install optware-devel (ganz dicke Keule aber make ist dabei)

syno cups beenden
> sudo /usr/syno/etc.defaults/rc.d/S55cupsd.sh stop

und syno cups dauerhaft stoppen
> mkdir /usr/syno/etc.defaults/rc.d/backup
> mv /usr/syno/etc.defaults/rc.d/s55cupsd.sh /usr/syno/etc.defaults/rc.d/backup/

Optware Cups installieren
> sudo /opt/bin/ipkg install cupsInstalling cups (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/cups_1.4.6-1_arm.ipk
Configuring cups
Successfully terminated.

Cups Web GUI installieren
> sudo /opt/bin/ipkg install cups-doc
Installing cups-doc (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/cups-doc_1.4.6-1_arm.ipk
Configuring cups-doc

und für das compilieren anderer Pakete
> sudo /opt/bin/ipkg install cups-dev

da auf der synology die Befehle adduser und addgroup fehlen (Verwaltung über DSM-GUI), verwenden wir die
cups BasicDigest Authentifizierung
der Schlüssel liegt dann in /opt/etc/cups/passwd.md5

> sudo /opt/bin/lppasswd -g root -a admin
Enter password: xxxxxxxxx

cupsd.conf anpassen (nano) - ggf. Loglevel auf debug setzen
> cat /opt/etc/cups/cupsd.conf
Rich (BBCode):
LogLevel warn
Port 631ServerAlias *

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS

# Default authentication type, when authentication is required...
DefaultAuthType BasicDigest

# Restrict access to the server...
<Location />
  #AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

# Restrict access to the admin pages...
<Location /admin>
  #AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

start/stop script für cups anlegen:
http://www.synology-wiki.de/index.php/IPKG#Startup_Script_cupsd
> sudo chmod 666 S55cupsd

jetzt mal schnuppern
> sudo /opt/etc/init.d/S55cupsd start

einloggen auf Cups Web GUI
https://syno:631/admin/
zum Test ob alle Rechte vorhanden sind den voreingestellten Drucker hp990c löschen
+ Share printers connected to this system
+ Allow printing from the Internet
+ Allow remote administration

Hinweis: bei Problemen mit den Rechten zum Einloggen auf der Cups-Web-Frontend ggf. mal den Port 631 tunneln
# ssh -L 8888:localhost:631 root@192.168.1.101
im Browser eingeben
http://localhost:8888

Hinweis: leider ist das usb backend von ipkg-cups defekt - es wird kein usb drucker erkannt
verlinke das usb backend der Syno
> sudo mv /opt/lib/cups/backend/usb /opt/lib/cups/backend/usb.bad
> sudo ln -s /usr/local/cups/backend/usb /opt/lib/cups/backend/usb


die aktuellen Gutenprint Treiber compilieren

> mkdir /volume1/tmp
> cd /volume1/tmp
> wget http://sourceforge.net/projects/gimp-print/files/gutenprint-5.2/5.2.8/gutenprint-5.2.8.tar.bz2
> tar --bzip2 -xvf gutenprint-5.2.8.tar.bz2
> cd gutenprint-5.2.8

diese Stelle ist etwas trickreich
> ./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include -L/opt/lib" \
--prefix=/opt \
--includedir=/opt/include \
--with-cups=/opt \
--disable-cups-ppds \
--disable-cups-level3-ppds \
--without-foomatic \
--disable-libgutenprintui2 \
--disable-nls \
--disable-static

es kommt noch Fehlermeldung bei make
#make
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_sa_restorer_v2@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_rt_sa_restorer_v2@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_rt_sa_restorer_v1@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_sa_restorer_v1@GLIBC_PRIVATE'
collect2: ld returned 1 exit status

Lösung
Quelle: http://forum.synology.com/enu/viewtopic.php?f=90&t=30132 (libpthread.so der Syno verwenden)
> sudo mv /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so.bad
> sudo cp /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so

und noch einmal
> make

Gutenprint nach /opt installieren
> sudo make install
Libraries have been installed in:
/opt/lib
/opt/lib/gutenprint/5.2/
Libraries have been installed in:
/opt/lib/gutenprint/5.2/modules

Kontrolle
> /opt/lib/cups/filter/rastertogutenprint.5.2
Usage: rastertoprinter job-id user title copies options [file]


cups Netzwerkzugriff zum Pixma-Drucker mit cups-bjnp
dafür die Netzerktreiber für Canon Pixma installieren

falls noch nicht getan (siehe Gutenprint):

> sudo ipkg install cups-dev
> cd /volume1/tmp

cups-bjnp compilieren
> wget http://sourceforge.net/projects/cups-bjnp/files/cups-bjnp/0.5.5/cups-bjnp-0.5.5.tar.gz
> tar xzf cups-bjnp-0.5.5.tar.gz
> cd cups-bjnp-0.5.5/
> ./configure --prefix=/opt
> make

ein Test, ob die Netzwerkverbindung zum Drucker steht
> ./bjnp
network bjnp://192.168.1.111:8611 "Canon MP970 series" "Canon MP970 series 192.168.1.111" "MFG:Canon;CMD:BJL,BJRaster3,BSCCe,NCCe,PLI;SOJ:TXT01,BJNP2;MDL:MP970 series;CLS:pRINTER;DES:Canon MP970 series;VER:1.110;STA:10;FSI:03;HRI:OTH;MSI:DAT,E3;"

das bjnp backend nach cups installieren
> sudo cp ./bjnp /opt/lib/cups/backend/

Cups neu starten
> sudo /opt/etc/init.d/S55cupsd restart

Cups GUI im Browser aufrufen und Drucker hinzufügen
https://syno:631/admin/
"Add Printer" und Netzwerkdrucker hinzufügen
Discovered Network Printers: Canon MP970 series 192.168.1.111 (Canon MP970 series)
[x] Share This Printer
-> Driver: Canon PIXMA MP970 - CUPS+Gutenprint v5.2.8 (color, 2-sided printing)

Drucker-Treiber liegen jetzt hier:
/opt/var/cache/cups/Canon_MP970_LAN.ipp4
/opt/var/cache/cups/Canon_MP970_LAN.pwg3
/opt/etc/cups/ppd/Canon_MP970_LAN.ppd


Airprint mit Bonjour über airprint-generate.py einrichten

zuerst pycups installieren
http://pypi.python.org/pypi/pycups/1.9.62

leider benötigen wir dazu python
> sudo ipkg install python26

pycups installieren
> cd /volume1/tmp/
> wget http://pypi.python.org/packages/source/p/pycups/pycups-1.9.62.tar.bz2
> tar --bzip2 -xvf pycups-1.9.62.tar.bz2
> cd pycups-1.9.62
> sudo /opt/bin/python2.6 setup.py install
running install_lib
copying build/lib.linux-armv5tel-2.6/cups.so -> /opt/local/lib/python2.6/site-packages
running install_egg_info
Writing /opt/local/lib/python2.6/site-packages/pycups-1.9.62-py2.6.egg-info

jetzt weiter mit
> cd /volume1/tmp/
syno wget geht nicht für https compiliert
> /opt/bin/wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py

Mit dem Script die Avahi "services" erzeugen und installieren:
> /opt/bin/python2.6 ./airprint-generate.py

einfaches kopieren der service-Datei nach /usr/syno/avahi/services/ ergibt keinen Sinn, da S99avahi.sh fremde Service-Dateien löscht
einzige Außnahme: sie heißen: 3rdparty.*.service
Achtung: S99avahi.sh akzeptiert nur genau eine 3rdparty.* Datei, bei zwei Dateien wird alles gelöscht

> for a in $(ls *.service); do mv $a "3rdparty.$a"; done
> sudo cp 3rdparty.* /usr/syno/avahi/services/

kontrolliere, dass nur genau eine 3rdparty.* im Ordner /usr/syno/avahi/services/ liegt

avahi neu starten
> sudo /usr/syno/etc/rc.d/S99avahi.sh restart

versucht man jetzt über Airprint zu drucken:
-> Fehlermeldung im cups job spooler : stopped "Unable to execute gs program: No such file or directory"

Lösung:
für airprint pdf drucken fehlt noch "ipkg install ghostscript" oder einfacher
> sudo ln -s /usr/local/bin/gs /usr/bin/


cups mit Airprint und Zugriff auf Drucker im LAN ist jetzt fertig installiert

jetzt die Syno mal neu starten
> sudo reboot

oder
> sudo /opt/etc/init.d/S55cupsd restart
 
Zuletzt bearbeitet von einem Moderator:

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
uups, ich kann mein obiges Posting nicht mehr editieren???

deshalb hier eine kleine Korrektur:
> sudo chmod 755 /opt/etc/init.d/S55cupsd

und weiter
"sudo ipkg install optware-devel" installiert bereits python25 (2.5.6-2) so dass für das Bonjour-Airprint-Script ./airprint-generate.py auch python 2.5 verwendet werden kann:
> cd pycups-1.9.62
> sudo /opt/bin/python2.5 setup.py install
> /opt/bin/python2.5 ./airprint-generate.py
 
Zuletzt bearbeitet:

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Ich bekomme beim Kompilieren der Gutenberg Treiber auf meiner ds213+ mit DSM 4.1 immer folgenden Fehler:

libtool: link: gcc -Disfinite=finite -O6 -o .libs/extract-strings extract-strings.o ../../src/main/.libs/libgutenprint.so -Wl,-rpath -Wl,/usr/local/lib
../../src/main/.libs/libgutenprint.so: undefined reference to `sqrt'
../../src/main/.libs/libgutenprint.so: undefined reference to `ceil'
../../src/main/.libs/libgutenprint.so: undefined reference to `floor'
../../src/main/.libs/libgutenprint.so: undefined reference to `pow'
collect2: ld returned 1 exit status

Was kann da die Ursache sein?
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Hi,
Sehr interessante Anleitung, wäre im Wiki bestimmt auch gut aufgehoben.
Danke für deine Arbeit!

MfG Matthieu
 

slank

Benutzer
Mitglied seit
08. Okt 2009
Beiträge
63
Punkte für Reaktionen
0
Punkte
0
Bin auch schwer beeindruckt.
Werde es mal nächste Woche versuchen ;-)

gruß
slank
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
../../src/main/.libs/libgutenprint.so: undefined reference to `sqrt'
../../src/main/.libs/libgutenprint.so: undefined reference to `ceil'
../../src/main/.libs/libgutenprint.so: undefined reference to `floor'
../../src/main/.libs/libgutenprint.so: undefined reference to `pow'
collect2: ld returned 1 exit status

Was kann da die Ursache sein?
Hast Du Dich genau an die Anleitung gehalten?
Stichworte:
- ipkg install optware-devel
- gutenprint-5.2.8.tar.bz2
- includedir=/opt/include

zu Deiner Frage:
da fehlt eine Referenz zu math.h (include)
schau mal, ob Du math.h in opt-Pfad hast

Du hast doch mit der DS213+ hat einen PowerPC - ich ARM (cs08q1armel)
- da kann es im opt-feed kleine Unterschiede geben...
 
Zuletzt bearbeitet:

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Hast Du Dich genau an die Anleitung gehalten?
Stichworte:
- ipkg install optware-devel
- gutenprint-5.2.8.tar.bz2
- includedir=/opt/include

zu Deiner Frage:
da fehlt eine Referenz zu math.h (include)
schau mal, ob Du math.h in opt-Pfad hast

Du hast doch mit der DS213+ hat einen PowerPC - ich ARM (cs08q1armel)
- da kann es im opt-feed kleine Unterschiede geben...

Ich habe das Problem lösen können, indem ich den Befehl angepasst und den Paramter -lm hinzugefügt habe (siehe http://cboard.cprogramming.com/c-pr...ined-reference-`sqrt-when-using-math-h.html):
> ./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include -L/opt/lib -lm" \
--prefix=/opt \
--includedir=/opt/include \
--with-cups=/opt \
--disable-cups-ppds \
--disable-cups-level3-ppds \
--without-foomatic \
--disable-libgutenprintui2 \
--disable-nls \
--disable-static

Danach hatte ich beim kompilieren mit make noch einige Fehlermeldungen, wo ich nicht nur wie oben beschrieben die Datei libpthread aus dem /lib Verzeichnis kopieren musste, sondern auch noch weitere Dateien auf gleiche Weise.

Jetzt hänge ich aber beim kompilieren bei folgender Meldung fest:
libtool: link: /opt/bin/gcc -std=gnu99 -I/opt/include -DCUPS_DRIVER_INTERFACE "-DALL_LINGUAS=\"cs da de el en_GB es fi fr gl hu it ja nb nl pl pt ru sk sl sv uk zh_CN zh_TW\"" -Disfinite=finite -O6 -o .libs/gutenprint.5.2 gutenprint_5_2-genppd.o gutenprint_5_2-i18n.o -Wl,-rpath -Wl,/opt/lib -L/opt/lib -lcupsimage -lcups -lssl -lcrypto -lz -lpthread -lcrypt ../../src/main/.libs/libgutenprint.so -lm -Wl,-rpath -Wl,/opt/lib
/opt/lib/libtiff.so.3: undefined reference to `__divdf3@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__fixdfsi@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__adddf3@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__muldf3@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__fixunsdfsi@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__floatsidf@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__ledf2@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__truncdfsf2@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__extendsfdf2@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__subdf3@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__gedf2@GLIBC_2.3.3'
collect2: ld returned 1 exit status
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
hm, immer noch die Mathe-Libs (Software floating-point emulation etc)
Du scheinst mit der Powerpc-CPU Probleme zu haben, die meine ARM Syno nicht hat.

http://www.oreilly.de/german/freebooks/rlinux3ger/ch132.html
Sie sollten den Schalter -l auf der Befehlszeile jedesmal benutzen, wenn Sie andere als die Standardbibliotheken einbinden wollen. Wenn Sie beispielsweise mathematische Routinen aus math.h benutzen möchten, sollten Sie am Ende der gcc-Befehlszeile -lm anhängen, womit libm eingebunden wird. Bedenken Sie aber, daß die Reihenfolge der -l-Optionen von Bedeutung ist. Ein Beispiel: Wenn Ihre Bibliothek libstuff Routinen aus libm aufruft, dann muß in der Befehlszeile -lm hinter -lstuff stehen
klingt heikel - mir ist immer noch nicht klar, warum es bei mir ohne -lm durchläuft
Deine neuen Mathe-Lib-Probleme könnten jetzt mit -lm zusammenhängen

--

ich hatte für configure von gutenprint-5.2.8 auch einige Anläufe gebraucht (s.o. "trickreich")
man muss z.B. alle GUI-Elemente daktivieren, da unsere NAS dafür auch keine Bibliotheken hat

die Lösung war letztendlich das make vom opt-feed meiner NAS für gutenprint
such mal ein make file für Deine Synology und schau dort mal rein...

siehe z.B. hier
http://trac.nslu2-linux.org/optware/browser/trunk/make/gutenprint.mk
oder hier:
http://lbmagnet.cern.ch/data/ddwrt/make/gutenprint.mk

...meine Hürde war, die passende GNU-Version auszutüfteln (-std=gnu99), da der gcc Compiler steckenblieb mit Fehlermeldungen wie "error: implicit declaration of function"
------------------------------------------------
Ergänzung:
Du must doch nur Gutenprint 5.2.8 compilieren, wenn Dein Drucker von der ipkg-Version Gutenprint 5.2.6 nicht unterstützt wird.

Ansonsten reicht doch ein einfaches
ipkg install gutenprint_5.2.6-1_powerpc cups-driver-gutenprint_5.2.6-1_powerpc

Frage: Welchen opt Pfad benutzt Du für die DS213+ ( http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/ ) ?
 
Zuletzt bearbeitet:

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Du must doch nur Gutenprint 5.2.8 compilieren, wenn Dein Drucker von der ipkg-Version Gutenprint 5.2.6 nicht unterstützt wird.

Ansonsten reicht doch ein einfaches
ipkg install gutenprint_5.2.6-1_powerpc cups-driver-gutenprint_5.2.6-1_powerpc

Habe ich probiert und funktioniert auch. Aber leider ist mein Drucker in der Version nicht enthalten (Canon Pixma MX850). Könnte es eventuell auch mit einem anderen Modell funktionieren?


Ja, genau den.
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
ok, der Canon Pixma MX850 ist ein Argument tiefer einzusteigen

ich habe gutenprint auf der ARM - Syno mit dem Schalter "gcc -lm" noch einmal erfolgreich kompiliert und den gesamten bash-output auf pastebin hochgeladen:
http://pastebin.com/iqA3KDqf

am Ende steht meine gcc Version
bitte hier mal auf "Configured with:" genau hinschauen

vielleicht findest Du im Output einen Ansatz was dem PowerPC fehlt

hier noch meine Includes
> ls /opt/include/
FlexLexer.h byteswap.h err.h getopt.h lastlog.h libxml2 netash poll.h sched.h string.h tgmath.h wchar.h
_G_config.h bzlib.h errno.h glob.h lber.h limits.h netatalk printf.h scsi strings.h thread_db.h wctype.h
a.out.h c++ error.h gnu lber_types.h link.h netax25 protocols search.h stropts.h tiff.h wordexp.h
aio.h complex.h execinfo.h gnu-versions.h ldap.h linux netdb.h pthread.h semaphore.h subversion-1 tiffconf.h xlocale.h
aliases.h cpio.h expat.h grp.h ldap_cdefs.h locale.h neteconet pty.h setjmp.h sudo_plugin.h tiffio.h zconf.h
alloca.h crypt.h expat_external.h gutenprint ldap_features.h ltdl.h netinet pwd.h sgtty.h symcat.h tiffvers.h zlib.h
ansidecl.h ctype.h fcntl.h gutenprintui2 ldap_schema.h magic.h netipx python2.5 shadow.h sys time.h
ar.h cups features.h iconv.h ldap_utf8.h malloc.h netpacket python2.6 signal.h syscall.h ttyent.h
argp.h db.h fenv.h ieee1284.h libavcodec math.h netrom re_comp.h slapi-plugin.h sysexits.h ucontext.h
argz.h db_cxx.h fmtmsg.h ieee754.h libavdevice mcheck.h netrose readline spawn.h syslog.h ulimit.h
arpa dbm.h fnmatch.h ifaddrs.h libavformat memory.h nfs regex.h sqlite3.h tar.h unistd.h
asm dirent.h fpu_control.h inttypes.h libavutil mntent.h nl_types.h regexp.h sqlite3ext.h tcl.h ustat.h
asm-generic dis-asm.h fstab.h jconfig.h libgen.h monetary.h nss.h resolv.h stab.h tclDecls.h utime.h
assert.h dlfcn.h fts.h jerror.h libintl.h mqueue.h obstack.h rpc stdint.h tclPlatDecls.h utmp.h
bfd.h elf.h ftw.h jmorecfg.h libio.h ndbm.h paths.h rpcsvc stdio.h termcap.h utmpx.h
bfdlink.h endian.h gconv.h jpeglib.h libpng12 neon png.h sane stdio_ext.h termio.h values.h
bits envz.h gdbm.h langinfo.h libpostproc net pngconf.h sasl stdlib.h termios.h wait.h

Syno> ls /opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/include
arm_neon.h decfloat.h float.h iso646.h mmintrin.h stdarg.h stdbool.h stddef.h unwind.h varargs.h
 
Zuletzt bearbeitet:

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
ich denke mal bei all Deine Fehlermeldungen zu math.h, dass der Unterschied hier liegt:

http://www.synology.com/products/compare_spec.php?lang=enu&product_id_list=109,90#compare_show_top
Floating Point Unit
DS213+ yes
DS212+ no

Quelle: http://lists.uclibc.org/pipermail/uclibc/2007-September/039262.html
> libgcc2.c: (.text+0x34): undefined reference to `__fixdfsi'

The missing functions are normally in libgcc. Did you configure your
toolchain for soft-float? If not, your libgcc may be missing the
floating point emulator

vielleicht passt das ipkg-GNU-Toolchain nicht zur DS213+
Stichworte:
--with-fpu=xyz
--with-float=softfp
 
Zuletzt bearbeitet:

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
@admin: das ist das einzige Forum was ich kenne wo nach wenigen Stunden das Editieren gesperrt wird
ich komme mir vor wie ein Spammer

zur Sache:
/opt/lib/libtiff.so.3: undefined reference to `__divdf3@GLIBC_2.3.3'
/opt/lib/libtiff.so.3: undefined reference to `__fixdfsi@GLIBC_2.3.3'
...
collect2: ld returned 1 exit status

wenn es nur im libtiff hängt, dann könnte man es auch manuell compilieren
habe es gerade erfolgreich getestet

Rich (BBCode):
das ist da:
> ls -al /opt/lib/libti*
lrwxrwxrwx 1 root root     16 Sep  8 00:09 /opt/lib/libtiff.so -> libtiff.so.3.9.5
lrwxrwxrwx 1 root root     16 Sep  8 00:09 /opt/lib/libtiff.so.3 -> libtiff.so.3.9.5
-rwxr-xr-x 1 root root 360208 Feb 14  2012 /opt/lib/libtiff.so.3.9.5
lrwxrwxrwx 1 root root     18 Sep  8 00:09 /opt/lib/libtiffxx.so -> libtiffxx.so.3.9.5
lrwxrwxrwx 1 root root     18 Sep  8 00:09 /opt/lib/libtiffxx.so.3 -> libtiffxx.so.3.9.5
-rwxr-xr-x 1 root root   6352 Feb 14  2012 /opt/lib/libtiffxx.so.3.9.5

hier ist die ipkg-Quelle
> sudo ipkg list_installed | grep libtiff
libtiff - 3.9.5-1 - Tag Image File Format Libraries

der Source Code
> wget ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.9.5.tar.gz
> tar xzf tiff-3.9.5.tar.gz 
> cd tiff-3.9.5/
> ./configure --prefix=/opt
> make

und jetzt mal schauen was neu compiliert wurde:
> ls -al ./libtiff/.libs/*.so*
lrwxrwxrwx 1 admin users     16 Sep 12 21:12 ./libtiff/.libs/libtiff.so -> libtiff.so.3.9.5
lrwxrwxrwx 1 admin users     16 Sep 12 21:12 ./libtiff/.libs/libtiff.so.3 -> libtiff.so.3.9.5
-rwxr-xr-x 1 admin users 894335 Sep 12 21:12 ./libtiff/.libs/libtiff.so.3.9.5
lrwxrwxrwx 1 admin users     18 Sep 12 21:12 ./libtiff/.libs/libtiffxx.so -> libtiffxx.so.3.9.5
lrwxrwxrwx 1 admin users     18 Sep 12 21:12 ./libtiff/.libs/libtiffxx.so.3 -> libtiffxx.so.3.9.5
-rwxr-xr-x 1 admin users  56850 Sep 12 21:12 ./libtiff/.libs/libtiffxx.so.3.9.5

alles prima
 

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Manuell kompilieren von libtiff passt.
Wäre es vielleicht eine Möglichkeit, wenn ich dir Zugriff per SSH auf meine Syno gestatte? Ich stecke leider in den Themen nicht tief genug drin...

Kann es auch was mit der alten gcc Version zu tun haben???

Rich (BBCode):
DiskStation> gcc -v
Reading specs from /volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/specs
Configured with: ../gcc-3.4.6/configure --build=i386-pc-linux-gnu --host=powerpc-linux-gnuspe --target=powerpc-linux-gnuspe --prefix=/opt --disable-nls --disable-static --with-as=/home/slug/optware/syno-e500/toolchain/gcc-3.4.3-glibc-2.3.4/powerpc-linux-gnuspe/bin/powerpc-linux-gnuspe-as --with-ld=/home/slug/optware/syno-e500/toolchain/gcc-3.4.3-glibc-2.3.4/powerpc-linux-gnuspe/bin/powerpc-linux-gnuspe-ld --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc driver version 3.4.6 executing gcc version 3.4.3
DiskStation>
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
da bin ich ja platt
ich hätte nicht gedacht, dass die GNU Toolchains vom PowerPC (gcc 3.4.3 November 4, 2004) und ARM (gcc 4.2.3 February 1, 2008) so weit auseinanderliegen
Die gcc Version dürfte aber nicht der Grund sein, warum Deine Mathe Libraries nicht stimmen. Eher scheint da mit nslu2-ipkg Crosscompiler-Einstellungen etwas nicht zu stimmen. (Stichwort FPU).
Im WD Forum habe ich mal einen getroffen, der solche globale Einstellung im opt-feed korrigiert hat...

Man könnte natürlich mal das Syno-PowerPC-SDK ausgraben und selber den Crosscompiler unter Ubuntu o.ä. anwerfen. Ein riesen Aufwand der nur für Kernel-Module gerechtfertigt ist.

Ich würde sagen, als letzten Versuch die o.g. libtiff libraries nach /opt/lib zu kopieren (oder komplett mit "make install") und dann sehen wir uns noch einmal die Fehlermeldungen beim kompilieren von Gutenprint an.

Ansonsten warten wir, bis hier jemand mit einer PowerPC-Syno und etwas Erfahrung Gutenprint freundlicherweise kompiliert.

PS: Ich danke für das Vertrauen - aber ssh Zugriff nur ungern - ich bin auch nur Hobbybastler der stundenlang frickelt ;-)

Ist ja schade, dass die PowerPC-Synos erst mal außen vor sind.
könnte ich den Thread editieren, könnte ich oben einen Hinweis auf PowerPC/ARM setzen...
 
Zuletzt bearbeitet:

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Ich würde sagen, als letzten Versuch die o.g. libtiff libraries nach /opt/lib zu kopieren (oder komplett mit "make install") und dann sehen wir uns noch einmal die Fehlermeldungen beim kompilieren von Gutenprint an.

Es hat funktioniert! Ich habe die libtiff libraries mit make install installiert und anschließend die gutenprint treiber kompiliert und installiert. Jetzt kann ich diese in CUPS auch nutzen. Mal sehen, wie jetzt die weitere Einrichtung verläuft...
 

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Weiter geht es mit Fehlern beim Installieren von pycups:

/opt/bin/gcc -g -O2 -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -DVERSION="1.9.62" -I/opt/include/python2.6 -c cupsconnection.c -o build/temp.linux-ppc-2.6/cupsconnection.o
cupsconnection.c: In function `Connection_getDocument':
cupsconnection.c:1177: error: `PATH_MAX' undeclared (first use in this function)
cupsconnection.c:1177: error: (Each undeclared identifier is reported only once
cupsconnection.c:1177: error: for each function it appears in.)
cupsconnection.c:1177: warning: unused variable `docfilename'
cupsconnection.c: In function `Connection_addPrinter':
cupsconnection.c:2240: error: `PATH_MAX' undeclared (first use in this function)
cupsconnection.c:2240: warning: unused variable `template'
cupsconnection.c: In function `PyObject_to_string':
cupsconnection.c:2827: warning: dereferencing type-punned pointer will break strict-aliasing rules
cupsconnection.c: In function `Connection_getPPD3':
cupsconnection.c:3528: error: `PATH_MAX' undeclared (first use in this function)
cupsconnection.c:3528: warning: unused variable `fname'
cupsconnection.c: In function `Connection_printTestPage':
cupsconnection.c:3614: error: `PATH_MAX' undeclared (first use in this function)
cupsconnection.c:3614: warning: unused variable `filename'
cupsconnection.c: In function `Connection_getSubscriptions':
cupsconnection.c:3896: warning: dereferencing type-punned pointer will break strict-aliasing rules
cupsconnection.c:3923: warning: dereferencing type-punned pointer will break strict-aliasing rules
error: command '/opt/bin/gcc' failed with exit status 1
 

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Die PATH_MAX Fehlermeldung konnte ich beheben, indem ich #define PATH_MAX in die Datei cupsconnections.c hinzugefügt habe. Jetzt sieht die Fehlermeldung so aus:

/opt/bin/gcc -g -O2 -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -DVERSION="1.9.62" -I/opt/include/python2.6 -c cupsconnection.c -o build/temp.linux-ppc-2.6/cupsconnection.o
cupsconnection.c: In function `Connection_getDocument':
cupsconnection.c:1179: error: array size missing in 'docfilename'
cupsconnection.c: In function `Connection_addPrinter':
cupsconnection.c:2242: error: array size missing in 'template'
cupsconnection.c: In function `PyObject_to_string':
cupsconnection.c:2829: warning: dereferencing type-punned pointer will break strict-aliasing rules
cupsconnection.c: In function `Connection_getPPD3':
cupsconnection.c:3530: error: array size missing in 'fname'
cupsconnection.c: In function `Connection_printTestPage':
cupsconnection.c:3616: error: array size missing in 'filename'
cupsconnection.c: In function `Connection_getSubscriptions':
cupsconnection.c:3898: warning: dereferencing type-punned pointer will break strict-aliasing rules
cupsconnection.c:3925: warning: dereferencing type-punned pointer will break strict-aliasing rules
error: command '/opt/bin/gcc' failed with exit status 1
 

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Ich habe die pycups Installation scheinbar hinbekommen, indem ich "quick & dirty" die /volume1/@optware/include/linux/limits.h ins pycups Verzeichnis kopiert und den Eintrag #include "limits.h" in die Datei cupsconnections.c hinzugefügt habe.
 

lbeckmann

Benutzer
Mitglied seit
04. Sep 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
einfaches kopieren der service-Datei nach /usr/syno/avahi/services/ ergibt keinen Sinn, da S99avahi.sh fremde Service-Dateien löscht
einzige Außnahme: sie heißen: 3rdparty.*.service
Achtung: S99avahi.sh akzeptiert nur genau eine 3rdparty.* Datei, bei zwei Dateien wird alles gelöscht

> for a in $(ls *.service); do mv $a "3rdparty.$a"; done
> sudo cp 3rdparty.* /usr/syno/avahi/services/

kontrolliere, dass nur genau eine 3rdparty.* im Ordner /usr/syno/avahi/services/ liegt

Heisst das, es gibt keine Möglichkeit einen zweiten Drucker gleichzeitig für AirPrint zu nutzen?
Ich musste auch schon den iTunes Server anhalten, da dieser auch eine 3rdparty Datei anlegt.
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
Es hat funktioniert! Ich habe die libtiff libraries mit make install installiert und anschließend die gutenprint treiber kompiliert und installiert. Jetzt kann ich diese in CUPS auch nutzen. Mal sehen, wie jetzt die weitere Einrichtung verläuft...
Im Ernst - ich bin beeindruckt.
Die Druckertestseite aus Cups erfolgreich über USB gedruckt? (Stichwort gs)
Ich weiß nicht, ob bei der PowerPC Version die /opt/lib/cups/backend/usb läuft (s. erstes Post)

Ich habe die pycups Installation scheinbar hinbekommen, indem ich "quick & dirty" die /volume1/@optware/include/linux/limits.h ins pycups Verzeichnis kopiert und den Eintrag #include "limits.h" in die Datei cupsconnections.c hinzugefügt habe.
Sche..e
Deine limits.h liegt unter /opt/include/linux/limits.h ????
Ich habe doch auf der vorigen Seite extra ein ls /opt/include/ gemacht. Dort liegt meine limits.h.
Wie Du sieht hat Dein "ipkg install optware-devel" Header Dateien auch in /include/linux/ abgelegt.
Dadurch musst Du doch auch die include-Pfade entsprechend erweitern:
./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include" - --includedir=/opt/include --includedir=/opt/include/linux usw.

Daher wird auch der ganze Stress mit make Gutenprint gekommen sein.

Heisst das, es gibt keine Möglichkeit einen zweiten Drucker gleichzeitig für AirPrint zu nutzen?
jetzt wirst Du aber gierig - lass uns erst einmal einen Drucker mit Airprint zum laufen bringen ;-)

Du kannst natürlich beliebig viele Drucker mit Bonjour veröffentlichen
Variante 1: Bonjour Dienst selber installieren und starten (Nachteil fehlende DSM - Verwaltung)
Variante 2: Sich im S99avahi.sh Start/Stop-Script mal die Stelle mit rm und "3rdparty.*.service" ansehen und anpassen.

Ich habe V2 nicht weiter verfolgt.
Nach flüchtigem Blättern hatte ich den Eindruck, dass S99avahi.sh zuerst alle *.service löscht und die eigenen *.service neu generiert.
Ein 3rdparty.*.service wird geschützt.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat