[Allegro] Compilierung von acon unter Linux

Thomas Berger ThB at Gymel.com
Mi Mär 14 17:16:53 CET 2012


Lieber Herr Oberfell, liebe Liste,


> Für alle, die es interessiert, fasse ich die Schritte nochmals zusammen:
> 
> 1.) ac15, aindex und acon (aus acon/trunk) muessen in parallelen Verzeichnisse
> vorliegen, es darf keine Zwischenebene (wie trunk) geben.
> 
> 2.) Die jeweiligen Makefile.am auf die gewuenschte Plattform patchen. Für Linux
> muss in allen drei Makefile.am das -DUNIX=1 ergänzt werden um ein zusätzliches
> (!)  -DLINUX=1

mittelfristig muessen solche Setzungen dringend dort raus und
das Benoetigte (was mag das sein: in abasew.cpp wird damit Unfug
uebelster Sorte "geschaltet") durch configure ermittelt werden.

Uebergangsweise kann man diese Schalter auch an der Kommandozeile von
configure angeben (siehe naechster Punkt), ich weiss allerdings nicht,
ob man diese Setzungen aus Makefile.am auch /aus/schalten kann.


> 3.) Folgende Schritte im Hauptverzeichnis ausführen (ich musste automake mit der
> Option --add-missing verwenden; autoscan war hilfreich, um configure.ac
> automatisch zu erzeugen)
> 
> autoscan
> mv configure.scan configure.ac
> autoheader
> vim configure.ac
>    Ergaenzung direkt nach AC_INIT:
>      AM_INIT_AUTOMAKE
>    Ergaenzung unter # Checks for programs
>      AC_PROG_RANLIB
> aclocal
> automake --add-missing --copy
> autoconf
> ./configure

./configure CXXFLAGS="-DLINUX=1 -DUNIX=1"




> 4.)
>> Nun sollten Sie in den drei Unterverzeichnissen Makefiles haben, und sind
>> damit endlich in der Lage, den ausgecheckten Kram (etwa die
>> .dep-Unterverzeichnisse) zunaechst einmal aufzuraeumen, um einen sauberen
>> *Ausgangszustand* herzustellen:
>>
>> Fuer jedes der drei Verzeichnisse also hineinwechseln und "make distclean"
>> geben.
> 
> 5.)
>> Zurueck auf die Hauptebene und erneut mit
>>
>> ./configure

bzw.

./configure CXXFLAGS="-DLINUX=1 -DUNIX=1"

(oben, wo man die produzierten Makefiles nur fuer die "make distclean"
benoetigte, waren die expliziten Setzungen gar nicht so wichtig)


>> die Makefiles bauen
>>
>> dann ins acon-Unterverzeichnis und
>> "make" geben (die make's fuer ac15 und aindex sind da fest verdrahtet,
>> die make clean und make distclean leider nicht).
> 
>> Damit sollte ein lauffähiges Programm entstehen.

[...]

> Das Programm ist zwar an sich lauffähig, stürzt aber auf einem anderen System
> noch ab:
> *** invalid open call: O_CREAT without mode ***
> Das kann ich mir aber erst nächste Woche anschauen.

Ich habe mir nun auch eine 32bit-Maschine beschafft (mit DSL 1500 hier in einem
westdeutschen Ballungsraum dauert das alles so seine Zeit) und habe nun auch ein
lauffaehiges acon (compiliert mit
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
auf
Linux Dev32 3.0.0-16-generic #29-Ubuntu SMP Tue Feb 14 12:49:42 UTC 2012 i686
i686 i386 GNU/Linux
und es scheint zu funktionieren auf aktuellen 64bit-Versionen von CentOS und
OpenSUSe

Fazit: anscheinend wirklich ein 64bit-Problem der Quellen, anzunehmenderweise
in den aindex-Routinen.

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro