Hallo zusammen,
bastle gerade mit einem Kollegen an einem kleinen Java-Projekt, welches JNI benutzt und auf einer DLL/SO aufbaut.
Cross-Compilen der DLL/SO von Linux aus ist kein Problem. Funktioniert. Nur dummerweise heißen die MinGW GCC executables nicht auf jedem System gleich. Selbst zwischen Debian und Ubuntu, welche ja sehr verwand miteinander sind, gibt's unterschiede im Namen des Compiler-Executables.
Gebaut wird das ganze Projekt (Java und der Native Teil) mittels Maven. In Maven kriegen wir die Platformen (Linux, Windows, 32bit, 64bit) schon unterschieden. Nur dadurch dass die MinGW Compiler nicht überall den gleichen Namen haben, ist das ganze nicht auf allen gängigen Systemen "out of the box" ausführbar.
Unsere bisherige Idee:
Maven ruft statt des MinGW GCC Compilers ein Wrapper-Script auf (die Argumente sind ja überall die gleichen). Das Wrapper-Script ermittelt das installierte Linux und stellt entsprechend den Namen des Compiler Executables ein und ruft diesen mit den Parametern, welche dem Wrapper-Script übergeben wurden auf.
In der Theorie funktioniert das. Die Frage ist jetzt aber: Ist das der richtige Weg? Oder gibt's bessere/zuverlässigere Lösungen?
Klar, in der C/C++ Welt gibt's diverse Tools (autoconf, make und wie sie alle heißen). Aber wir versuchen die Abhängigkeiten so gering wie möglich zu halten (einzige Voraussetzung soll sein: JDK, Maven + MinGW). Theoretisch reicht uns der MinGW Compiler. Aber da ja jede Distri ihre eigene Suppe kocht, ist das wie eben beschrieben nicht so einfach.
Wie unterscheidet man am besten/einfachsten diverse Linux-Distributionen, so dass man das jeweils passende Executable benutzen kann?
Hat jemand einen guten Tipp für uns?
Gruß
Alex
[Erledigt] GCC MinGW Compiler auf allen Linuxen finden?
[Erledigt] GCC MinGW Compiler auf allen Linuxen finden?
Zuletzt geändert von alex0801 am 13.12.2012 09:41:01, insgesamt 1-mal geändert.
Re: GCC MinGW Compiler auf allen Linuxen finden?
Soweit ich weiß geht das nicht zuverlässig. Mit lsb_release wirst du zwar in der Mehrzahl der Fälle sinnvolle Ergebnisse erzielen, aber verlassen solltest du dich darauf nicht unbedingt. Gerade kleinere Hinterhofdistributionen nehmen das nicht immer ganz genau.alex0801 hat geschrieben:Wie unterscheidet man am besten/einfachsten diverse Linux-Distributionen, so dass man das jeweils passende Executable benutzen kann?
Aber eigentlich interessiert dich die Distribution doch gar nicht. Es ist doch nur Mittel zum Zweck den Namen des Binarys zu erraten. Wäre es da nicht sinnvoller direkt eine Liste von Binarynamen auf Existenz zu prüfen?
Re: GCC MinGW Compiler auf allen Linuxen finden?
Hast recht. So rum macht's irgendwie mehr Sinn. Hab ein Array mit Binary-Namen angelegt. Das Script sucht nun mittels "command -v <name>" nach dem Pfad auf der Platte. Wenn das klappt, dann ist das wohl das richtige Executable, welches dann ausgeführt wird.
Gruß und Danke,
Alex
Gruß und Danke,
Alex