Servus Gemeinde,
ich stehe vor einem Problem welches mich ein wenig beschäftigt und ich
habe keinen Ansprechpartner der mit hier weiterhelfen kann; aber wo,
wenn nicht hier, wohnt das Wissen über cross-compiling.
Folgendes vorhaben:
Ich habe ein awk-Script welches eine recht große Datenmenge bearbeitet.
Dieses funktioniert auch wie gewollt. Um dieses Script aber an Kollegen
weiterzugeben welche nicht so firm in Scriptsprachen sind wollte ich es
kompilieren und stieß dabei auf das awka-Projekt
(http://awka.sourceforge.net/index.html). Dies ermöglicht eine
Umwandlung des awk-Scripts in einen c-Code welcher dann mittels gcc
kompiliert werden kann.
Dies hat auf meiner Ubuntu-Maschine (wenn die Libs korrekt liegen) auch
funktioniert. Mit awka -X -f <file> entsteht also eine Programmdatei die
macht was sie soll, direkt aus awka heraus.
Nun war mein Ziel aber solch ein Programm für Windows lauffähig zu
machen, denn gerade da steht awk dem normalen User ja nicht so einfach
zur Verfügung. Also beschäftigte ich mich lange mit cross-compiling aus
meinem Ubuntu (32bit) mit mingw-w64. Es gelingt mir aber einfach nicht
hier eine funktionieren *.exe zu erzeugen. (Ziel: Windows 32bit)
Ich muss vorweg schicken: meine Kenntnisse zum Thema cross-compiling
sind leider nicht so größten.
Ich kann zwar mit "i686-w64-mingw32-gcc -o test.exe test.c" eine
lauffähige *.exe erzeugen, sobald ich aber im Code die awka-Library
hinzufüge (#include <libawka.h>, egal ob genutzt oder nicht) bekomme ich
Compiler-Fehler:
1 | $ i686-w64-mingw32-gcc -o test.exe test.c
|
2 | In file included from test.c:2:0:
|
3 | /usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/libawka.h:37:20: fatal error: config.h: Datei oder Verzeichnis nicht gefunden
|
4 | compilation terminated.
|
Die awka-Libraries (*.a und *.h) für Windows habe ich im
/usr/i686-w64-mingw32/... abgelegt. Dies minderte die Fehler, dennoch
stimmt hier irgendwas nicht was sich mir nicht erschließt. Ist hierfür
irgend eine make-Umgebung erforderlich und wenn ja wie generiert man die
richtig?
Um einen Fehler durch die cross-Umgebung auszuschließen habe ich auch
awka für Windows versucht, hier bekomme ich aber den gleiche Fehler wenn
ich versuche die *.exe direkt aus awka heraus zu erstellen. Daher mache
ich wohl in der generellen händischen Nutzung des Compilers irgendwelche
Fehler.
Es ist mir klar, dass man zusammen mit der *.exe aus mingw dann immer
eine mingw.dll für Windows ausliefern muss. Das ist überhaupt kein
Problem, nur vom Anwender-Nutzer zu verlangen er solle bitte awk
installieren ist etwas zu dick aufgetragen.
Sehr gerne stelle ich alle möglichen Test-Scripte zur Verfügung, wenn
ich damit irgendwas beitragen kann. Kann mir irgendjemand hier unter die
Arme greifen? Wenns am Ende klappt backe ich auch gern nen Dankeskuchen
:-)
Vielen Dank schon jetzt - schon alleine fürs Lesen!
jan