Seite 1 von 1
Sox läßt sich nicht installieren
Verfasst: Montag 26. Juni 2006, 12:25
von snakeseven
Hi,
seid nicht böse, wenn ich hier was poste, was eigentlich kein Python-Thema ist (ausser, daß ich Sox von Python aus aufrufe). Aber ich bekomme auf meinem SuSE9.3 Server Sox nicht installiert. Und ihr seid meine letzte Hoffnung !!
./config läuft noch sauber durch, aber bei
make bricht er mit folgender Fehlermeldung ab:
Code: Alles auswählen
gcc -g -O2 -Wall -I. -I. -c 8svx.c
8svx.c: In function `st_svxstartread':
8svx.c:193: error: `errno' undeclared (first use in this function)
8svx.c:193: error: (Each undeclared identifier is reported only once
8svx.c:193: error: for each function it appears in.)
8svx.c: In function `st_svxstartwrite':
8svx.c:275: error: `errno' undeclared (first use in this function)
8svx.c: In function `st_svxstopwrite':
8svx.c:331: error: `errno' undeclared (first use in this function)
make[1]: *** [8svx.o] Error 1
make: *** [all] Error 2
Hier sind doch Linux-Profis unterwegs, die so ziemlich jede Hürde meistern ?? Helft bitte einem völlig ratlosen Pythonesen
Gruss, Seven
P.S. Das SuSE-RPM ist ohne GSM Unterstützung und genau die brauche ich
Verfasst: Montag 26. Juni 2006, 17:50
von Frank
`errno' undeclared
Es fehlt wahrscheinlich ein
#include <errno.h> in der betreffenden Datei. Allerdings gibt es verschiedenen Headerdateien errno.h mit jeweils verschiedenen Pfaden (meist unter /usr/include/sonstwo). Desweiteren könnte es sich auch um eine projekteigene Datei handeln. Wenn du die Versionsnummer des verwendeten Paketes verätst, kann ich mal reingucken.
Gruß, Frank
Verfasst: Montag 26. Juni 2006, 18:18
von snakeseven
Hi,
die Version ist 12.18.1.
Die Zeile #include <errno.h> ist in der Datei '8svx.c' vorhanden und /usr/include/errno.h gibts auch, deswegen verstehe ich das auch nicht !?
Gruss, Seven
Verfasst: Montag 26. Juni 2006, 18:54
von Frank
Das Einbinden der errno.h ist an eine Bedingung geknüpft:
Man möge mir verzeihen das ich nicht angefangen habe nach dem Makro HAVE_ERRNO_H zu suchen indem ich am Ende den halben Quelltext beacker. Wie dem auch sei, das ifdef wird bei dir negativ ausgewertet und errno.h wird nicht inkludiert. Abhilfe schafft in solchem Fall das Auskommentieren der Bedingung:
Ich hoffe mal das das so hinhaut, den Fehler reproduzieren kann ich nicht da make bei mir einwandfrei durchläuft.
Gruß, Frank
edit. Aus stconfig.h:
Code: Alles auswählen
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1
War wohl ein Fehler beim 'configure'. Sollte also durch Auskommentieren der Bedingung wie oben erwähnt klappen.
Verfasst: Dienstag 27. Juni 2006, 09:09
von snakeseven
Hi und danke für die Mühe !
Es gibt immerhin einen kleinen Erfolg:
Ich habe in 8svx.c nichts auskommentiert, sondern nur in stconfig.h die Zeile #define HAVE_ERRNO_H 1 eingefügt. 8svx.c läuft jetzt fehlerfrei durch, dafür hakt es an einer anderen Datei:
Code: Alles auswählen
make[1]: Entering directory `/root/Resourcen/sox-12.18.1/src'
gcc -g -O2 -Wall -I. -I. -c 8svx.c
gcc -g -O2 -Wall -I. -I. -c adpcm.c
gcc -g -O2 -Wall -I. -I. -c aiff.c
gcc -g -O2 -Wall -I. -I. -c au.c
gcc -g -O2 -Wall -I. -I. -c auto.c
gcc -g -O2 -Wall -I. -I. -c avr.c
In file included from avr.c:25:
st_i.h:53: error: syntax error before "__extension__"
st_i.h:53: error: `__len' undeclared here (not in a function)
st_i.h:53: error: initializer element is not constant
st_i.h:53: error: syntax error before "if"
st_i.h:53: warning: type defaults to `int' in declaration of `__retval'
st_i.h:53: error: conflicting types for `__retval'
st_i.h:53: error: previous declaration of `__retval'
st_i.h:53: warning: data definition has no type or storage class
st_i.h:53: error: syntax error before '}' token
make[1]: *** [avr.o] Error 1
make[1]: Leaving directory `/root/Resourcen/sox-12.18.1/src'
make: *** [all] Error 2
Kann es ansonsten am Compiler liegen (gcc-3.3.5-5) ? Ich hatte nämlich auch Probleme mit configure. Erst als ich das Leerzeichen in der Shebang #!/bin/sh (vorher #! /bin/sh) entfernt hatte, lief configure.
Gruss, Seven
Verfasst: Dienstag 27. Juni 2006, 19:25
von Frank
Die Deklaration von strdup() in der Datei st_i.h ist auch wieder an eine Bedingung geknüpft (siehe stconfig.h, Zeile 92). Wie es aussieht produziert das configure-Script reichlich Blödsinn. Das Warum läßt sich allerdings nur im Rahmen deiner Distribution klären. Deshalb wärst du wohl am Besten dran, mal in einem Suse-Forum nachzufragen.
Falls du jedoch weiter in den Quellen herumstochern willst:
http://rapidshare.de/files/24280997/sox ... e.tgz.html
md5sum: 82fbec6b219e7b59f2afbc991c329ad3
Das ist sox-12.18.1 nach configure && make wieder zusammengepackt. Vielleicht helfen dir Vergleiche zwischen den Logs.
Was die Compilerversion betrifft, dazu schweigt sich die Projektpage aus, in der mitgelieferten Doku stochert grep ebenfalls im Dunkeln.
Gruß, Frank
Verfasst: Donnerstag 29. Juni 2006, 22:43
von snakeseven
Habe das Problem ausnahmsweise mal "blond" gelöst und die SuSE10 Binary auf den SuSE9.3 Server kopiert und siehe da es funktioniert ! Habe ich aber wohl eher Glück gehabt
Gruss, Seven