capi4hylafax neu kompilieren: falsche libstdc++.so.5, ...

Einrichten des Druckers und des Drucksystems, Scannerkonfiguration und Software zum Scannen und Faxen.
Antworten
egerlach
Beiträge: 211
Registriert: 13.06.2009 17:21:50

capi4hylafax neu kompilieren: falsche libstdc++.so.5, ...

Beitrag von egerlach » 03.06.2010 23:17:16

Ich versuche gerade c2faxsend von capi4hylafax selbst kompilieren, weil da ein patch rein muss. Zunächst will ich aber die original-Quellen übersetzen. System: lenny 32Bit. Habe die Sourcen capi4hylafax-01.03.00 von ftp://ftp.melware.net geholt und kompiliert. Das geht soweit gut.
Ein
# c2faxsend -d xxxx66 -v -C /var/spool/hylafax/etc/config.faxCAPI -f TIFF /var/spool/hylafax/recvq/fax000000014.tif
c2faxsend: error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory
lenny32:/home/gerlach/capi4hylafax-01.03.00# locate libtiff
/usr/lib/libtiff.a
/usr/lib/libtiff.la
/usr/lib/libtiff.so
/usr/lib/libtiff.so.4
/usr/lib/libtiff.so.4.2.1
/usr/lib/libtiffxx.a
[...]

Habe ein ln -sf /usr/lib/libtiff.so.4 /usr/lib/libtiff.so.3 gemacht, dann noch zweimal so einen Hack bis mein "Schwindel" bei ln -sf /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.5 auffällt:

# c2faxsend -d xxxx66 -v -C /var/spool/hylafax/etc/config.faxCAPI -f TIFF /var/spool/hylafax/recvq/fax000000014.tif
c2faxsend: /usr/lib/libstdc++.so.5: version `GLIBCPP_3.2' not found (required by c2faxsend)
c2faxsend: /usr/lib/libstdc++.so.5: version `CXXABI_1.2' not found (required by c2faxsend)

Ich mache sicherlich einen einfachen Anfängerfehler. Wie mache ich dem Compiler klar, dass ich nicht mehr auf einem alten System (etch??) mit /usr/lib/libtiff.so.3, /usr/lib/libcapi20.so.2, /usr/lib/libstdc++.so.5 bin sondern bei lenny mit /usr/lib/libtiff.so.4, /usr/lib/libcapi20.so.3, /usr/lib/libstdc++.so.6 ??

Gruss
Eckard

cosmac
Beiträge: 4581
Registriert: 28.03.2005 22:24:30

Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..

Beitrag von cosmac » 04.06.2010 00:57:05

hi,

verwendest du evt. noch das alte c2faxsend aus capi4hylafax-01.03.00/bin/? Nach ./configure und make hab' ich hier ein neues c2faxsend in capi4hylafax-01.03.00/src/faxsend/. Dem fehlen hier keine libs, ganz ohne Mogelei.
Beware of programmers who carry screwdrivers.

egerlach
Beiträge: 211
Registriert: 13.06.2009 17:21:50

Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..

Beitrag von egerlach » 04.06.2010 12:59:59

Oh ... recht hast Du, vielen Dank! Habe gar nicht auf das Datum gesehen, hätte nie gedacht, dass da alte Binaries beiliegen. Ich habe nun das richtige src/faxsend/c2faxsend genommen - und es funktioniert! - Es funktioniert sogar ohne den Patch (siehe http://ip-phone-forum.de/showthread.php?t=155117).

Leider findet nun kein debugging mehr statt. Es wird nur noch c2faxrecv geloggt in /var/spool/hylafax/log/capi4hylafax. Der Source-Code faxsend.cpp erwähnt häufig die Variablen LogLevel und LogFileName (DEFAULT_C4H_LOGFILENAME) , wo die aber herkommen und welche das in diesem faxsend.cpp sein sollen, erkenne ich nicht. Hier das faxsend.cpp http://aiai.de/foren/faxsend.cpp

Weiss jmd weiter?

cosmac
Beiträge: 4581
Registriert: 28.03.2005 22:24:30

Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..

Beitrag von cosmac » 04.06.2010 13:22:53

LogLevel wird mit der Option "-L" gesetzt (ab Zeile 170). Da könntest du auch LOG_TRACE_ALL durch LOG_TRACE_INFOS oder LOG_TRACE_WARNINGS ersetzen:

Code: Alles auswählen

    while ((ch = getopt (argc, aLOG_TRACE_WARNINGSrgv, "Hh?vLlpnf:C:c:d:m:P:")) != -1) {
        switch (ch) {
        case 'c':
(...)
        case 'L':
            LogLevel = LOG_TRACE_ALL;
            break;
        }
    }
also:

Code: Alles auswählen

# c2faxsend -L -d xxxx66 -v ...
Beware of programmers who carry screwdrivers.

egerlach
Beiträge: 211
Registriert: 13.06.2009 17:21:50

Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..

Beitrag von egerlach » 04.06.2010 15:36:46

Danke! Mit -L funktioniert das logging in /var/spool/hylafax/log/capi4hylafax wie "vorher". Also harmoniert hylafax in der neu kompilierten Version nicht mehr so ganz mit c2faxsend, das -L wird wohl nicht an c2faxsend mit übergeben. Auch wird der hylafax-Log File Name /var/spool/hylafax/log/capi4hylafax nicht übergeben. Vermutlich wird gar nichts übergeben ... Weiss jemand mehr dazu?

Ich habe mir eine version von c2faxsend kompiliert, bei immer gelogg't wird: in
in defaults.h
#define DEFAULT_C4H_LOGFILENAME "/tmp/capifax.log" -> "/var/spool/hylafax/log/capi4hylafax"

in faxsend.cpp:
LogLevel (0), -> LogLevel (4),

Hat jmd die richtige Lösung parat? - Also die, bei der hylafax die Optionen richtig an e2faxsend weitergibt? (Zur Erinnerung: das neu kompilieren des faxsend.cpp hat nun nicht mehr eine mit hylafax kompatible Schnittstelle, zumindest nicht was debugging anbetrifft)

Gruss
Eckard
Zuletzt geändert von egerlach am 04.06.2010 18:47:30, insgesamt 1-mal geändert.

cosmac
Beiträge: 4581
Registriert: 28.03.2005 22:24:30

Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..

Beitrag von cosmac » 04.06.2010 16:32:16

egerlach hat geschrieben:Also harmoniert hylafax in der neu kompilierten Version nicht mehr so ganz mit c2faxsend, das -L wird wohl nicht an c2faxsend mit übergeben. Auch wird der hylafax-Log File Name /var/spool/hylafax/log/capi4hylafax nicht übergeben. Vermutlich wird gar nichts übergeben ...
das kannst du wahrscheinlich mit "ps axuw | grep c2faxsend" nachprüfen während c2faxsend läuft, also ein Fax gesendet wird.

Wenn hylafax so gut wie nichts übergibt, sollten alle Werte aus dem Config-File gelesen werden. Da hylafax auch das nicht mit "-C" übergibt, gilt der Default /etc/config.faxCAPI. Da drin müsste man LogLevel und LogFileName usw. definieren können.
Beware of programmers who carry screwdrivers.

egerlach
Beiträge: 211
Registriert: 13.06.2009 17:21:50

Re: capi4hylafax neu kompilieren ....... [geloest]

Beitrag von egerlach » 04.06.2010 19:02:47

Danke!!!!
Habs kapiert, die Parameter werden nicht übergeben, sondern aus einer (ebenfalls!) in src/defaults.h definierten Datei zur Laufzeit ausgelesen.

Also: in src/defaults.h aus /etc/config.faxCAPI ein /etc/hylafax/config.faxCAPI
machen und schon ist es perfekt: c2faxsend liest zur Laufzeit die richtige /etc/hylafax/config.faxCAPI ein. Somit werden zur Laufzeit korrekt ausgelesen, z.B.:
LogFile: /var/spool/hylafax/log/capi4hylafax
LogTraceLevel: 4

Ich gehe mal davon aus, dass die Einträge in /etc/hylafax/config.faxCAPI die Einstellungen in src/defaults.h überschreiben (untested).
Wer das Kompilat will: http://aiai.de/foren/c2faxsend_Kind_WaitNoPut.bz2

Gruss
Eckard

Antworten