linux-l: ALSA und LibC6 incompatible headerfiles

Winfried Winkler willi at hobbit.in-berlin.de
Do Feb 24 22:39:10 CET 2000


Hallo !

Beim kompilieren der neuen ALSA Soundtreiber bin ich drauf gestossen...
Das Problem selber schein schon lange bekannt zu sein: Debian Bug Report
vor mehr als 19 Monaten :-(  -- aber Abhilfe ?

Die libc6 includes sind *untereinander* inkompatibel...
Die Network-Byteorder Conversion Routines sind mit "Conflicting Types"
unterschiedlich definiert in :
 <netinet/in.h> bzw. <asm/byteorder.h> included by <linux/in.h>

Wenn irgendwer es geschafft hat, <netinet/in.h> UND eine der beiden
andern genannten irgendwie rekursiv zu includen, laesst sich das ganze
nicht mehr kompilieren -- so geschehen z.B. in der alsa-lib-0.5.3

Was ist der "sauberste" Weg um dieses Problem herum ?
Ich habe leider noch nicht herausbekommen koennen WO/WIE byteorder.h
eingebunden wird -- das muss diverse "Level" tief rekursiv vergraben
sein... :-(  
...und auf den ersten Blick in die Sourcen ist mir nix konstruktives
eingefallen, ausser als schnellen "Hack" die Definitionen von "ntohl
und friends" in <netinet/in.h> mit einem #ifdef auszuklammern, wenn
bereits <asm/byteorder.h> eingelesen wurde...
Genau anders herum scheint aber die eigentlich erstrebenswertere
(portablere/"modernere") Loesung zu sein ? ...Wie ?

Danke an jeden, der dazu einen guten & fundierten Tip abgeben kann.
Ich pfusche so ungern in meinen System Includes :-))

Gruss,
    Winfried



Mehr Informationen über die Mailingliste linux-l