Sox läßt sich nicht installieren

Probleme bei der Installation?
Antworten
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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 :D

Gruss, Seven

P.S. Das SuSE-RPM ist ohne GSM Unterstützung und genau die brauche ich
Frank
User
Beiträge: 6
Registriert: Freitag 23. Juni 2006, 11:45

`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
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Frank
User
Beiträge: 6
Registriert: Freitag 23. Juni 2006, 11:45

Das Einbinden der errno.h ist an eine Bedingung geknüpft:

Code: Alles auswählen

#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
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:

Code: Alles auswählen

//#ifdef HAVE_ERRNO_H
#include <errno.h>
//#endif
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.
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Frank
User
Beiträge: 6
Registriert: Freitag 23. Juni 2006, 11:45

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
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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 :wink:

Gruss, Seven
Antworten