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
capi4hylafax neu kompilieren: falsche libstdc++.so.5, ...
Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..
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.
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.
Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..
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?
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?
Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..
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:
also:
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;
}
}
Code: Alles auswählen
# c2faxsend -L -d xxxx66 -v ...
Beware of programmers who carry screwdrivers.
Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..
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
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.
Re: capi4hylafax neu kompilieren: falsche libstdc++.so.5, ..
das kannst du wahrscheinlich mit "ps axuw | grep c2faxsend" nachprüfen während c2faxsend läuft, also ein Fax gesendet wird.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 ...
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.
Re: capi4hylafax neu kompilieren ....... [geloest]
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
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