make soll nicht gcc 4.3.1 verwenden, sondern gcc 4.1.2

Blender3D

Blender3D

Vitamin C++
Servus, liebe Forenmitglieder.

Ich möchte mir wxWidges kompilieren, welches allerdings nicht mit meiner GCC-Version harmoniert. Dem WxWidges-Wiki habe ich entnommen, dass ich eine ältere Version von GCC verwenden soll. Diese ist glücklicherweise schon installiert. Nun muss ich make dazu bringen, dass es nicht g++/gcc sondern g++-gcc-4.1.2 als compilierbefehl verwendet. Laut dem WxWidges-wiki müsste das funktionieren.

Wie kann ich sowas einstellen (./configure --help meinte, dass ich Variablen, wie CC verändern soll. Wie soll ich das machen?)

Grüße, Blender3D

Mein System:
Slamd64 12.0
wxWidges 2.8
GCC 4.3.x + Gcc 4.1.2
make 3.81
 
Du hast eigentlich zwei Methoden, die harte und die elegante. Die harte ist, die Environmentpfade (PATH und evtl. LD_LIBRARY_PATH) auf Deine gcc-Installation setzen. Dann wird automatisch dieser Compiler aufgerufen:
Code:
$ export PATH=/usr/local/gcc-4.1.2./bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib:$LD_LIBRARY_PATH
$ configure ...

Oder die elegante Variante, die mit Kommandozeilenparameter arbeitet:
Code:
$ ./configure CC=/usr/local/gcc-4.1.2/bin/gcc CXX=/usr/local/gcc-4.1.2/g++ ...
Möglicherweise müssen CC und CXX auch vor dem configure angegeben werden. Das kommt auf die autoconf-Dateien (configure.in, etc.) an.

Ich verwende am liebsten die Variante mit dem separaten path; allerdings zumeist für spezielle Build-Umgebungen bei denen dann auch mit einem '/usr/bin/env -i' das gesamte Environment speziell präpariert wird.
Ansonsten geht das mit dem CC/CXX-configure-Aufruf am schnellsten umzusetzen.
 
Juchuuuu!!
Viieelen besten Dank!!
Jetzt weiss ich, wie ich einiges, was nicht compilieren will compilieren kann.

Es funktioniert.

Allerdings erst nach einem make clean und der Änderung der Pfade für GCC-4.1.2 (von /usr/local/gcc-4.1.2/bin/gcc auf /usr/bin/gcc-4.1.2 + das ganze noch für g++.)

Grüße, Blender3D
 
Allerdings erst nach einem make clean und der Änderung der Pfade für GCC-4.1.2 (von /usr/local/gcc-4.1.2/bin/gcc auf /usr/bin/gcc-4.1.2 + das ganze noch für g++.)
Ja, das hatte ich vergessen zu erwähnen. Dass dies natürlich die Pfade sein müssen, in der die jeweilige gcc-Version installiert wurde. Aber dann ist ja gut, dass es funktioniert.
BTW, das Ganze funktioniert auch mit einer kompletten Compiler-toolchain, also bintools, gcc und glibc. Allerdings nur das kompilieren, laufen lassen geht nicht, da immer die aktuell, also beim Starten des Systems verwendete glibc im Zugriff bleibt. Aber diese Variante kommt zumeist nur beim Bauen von cross-Systemen auf.
 
Sinnvoller wäre es natürlich, die entsprechenden Programme mit 4.3 zu kompilieren und ggf. passende Patches/neuere und 4.3-kompatible Versionen zu verwenden.

Dieses Phänomen mit "4.3 lässt fehlende Includes nicht mehr durchgehen" (was hier zu > 95% auch der Fall sein wird) ist schliesslich schon zigtausend mal in letzter Zeit vorgekommen und auch gelöst worden.
 
das mag sein, aber in den meisten Fällen der Compilierprobleme hatte ich probleme mit dem Liner, der mir undefined references ausgegeben hat. Meisstens leigt es daran, dass an std::cin bzw.std::cout ungültige oder selbst geschriebene Datentypen übergeben werden. So kann ich z.B. mit std::cout keine CUdevprop (von Nvidia CUDA) übergeben. lösche ich dieAusgabe von CUdevprop geht alles, wie es soll.

Jedenfalls kann ich mir vorstellen, dass ich eine falsche Version der GLibC mit dem neuesten GCC verwende

Grüße, Blender3D
 

Ähnliche Themen

ld - errors beim compilieren von diversen dingen...

kompilier problem

Qemu mit KQemu

Textkonsole mit KMS zu klein

Installationsproblem vom RPM

Zurück
Oben