Gnu C/C++ Compiler

In der Linux Toolbox finden sich von IBM für AIX kompilierte C Compiler, so daß man auch unter AIX nicht auf das programmieren in einer Hochsprache verzichten muß. Allerdings sind die auf den IBM Seiten liegenden Versionen nicht besonders aktuell.

Wenn Sie die Gnu Compiler nutzen, ist es i.d.R. von Vorteil auch Gnu make anstelle von AIX make, sowie bash anstelle von AIX ksh für das kompilieren zu verwenden.

# bash ./configure

Meist ist das kompilieren mit den Gnu Programmen deutlich schneller, teilweise sind es die einzige Möglichkeit, daß das kompilieren überhaupt funktioniert. Wenn man also AIX ksh und/oder AIX make verwendet und in Fehler läuft, sollten diese Komponenten zuerst gegen ihre Gnu Gegenstücke getauscht werden.

Probleme beim Verwenden der Gnu C und C++ Compiler unter AIX 5L

libm not found / libm.a: not a COFF file

Diese beiden Fehlermeldungen können bei den aus der Linux Toolbox stammenden Gnu C-Compiler der 2.95 Reihe beim ./configure unter AIX 5L dadurch verursacht werden, daß sie mit binutils compiliert wurden, welche die 64-Bit Anteile in libm.a nicht kennen. (Unter AIX 4.3.3 tritt das Problem so nicht auf!) Sowohl beim Versuch auf 64-Bit Systemen als auch auf 32-Bit Systemen zu kompilieren kann deshalb fehlschlagen. In diesem Fall kann man die 64-Bit Teile von libm.a (konkret U64_TOCMAGIC) entfernen. Das Problem hängt nicht mit der Hardware zusammen, es tritt sowohl auf 32-Bit als auch auf 64-Bit Systemen auf.

Die folgenden Schritte wurden mit Gnu C und C++ ( 2.9.aix51.020209-3.aix5.1.ppc und 2.9.aix51.020209-4.aix5.1.ppc) auf  AIX 5.1 Systemen (ML03 bzw. ML05) auf B50 und auf einer 670 LPAR erfolgreich getestet.

# cp -p /usr/lib/libm.a /usr/local/lib/gcc-lib/

# /usr/bin/ar -X64 dv /usr/local/lib/gcc-lib/libm.a $(/usr/bin/ar -X64 t /usr/lib/libm.a)

<Top>

Visual Age C/C++ Compiler

Vom IBM VAC kann eine 60-Tage Try and Buy Version  direkt von der IBM homepage heruntergeladen und getestet werden. Der vom VAC erzeugte Code läuft deutlich schneller auf Power CPU als der Code des Cross-Compiler Gnu-C.

Weil der IBM Compiler etwas versteckt ist und die links öfter wechseln geht man nach www.ibm.com, dort nach "Products", dann "Software by category". Auf der o.g. Seite muß man  zunächst "Traditional Programming Languages" finden. Wenn man dann auf der folgenden Übersichtsseite den richtigen Compiler gefunden hat, kann man "Trials and Betas" auswählen. Auf den entsprechenden Seiten gibt es auch updates für die Compiler. Um den den Try and Buy VAC ohne Nervfaktor zu nutzen kann bis VAC V 8 in der Datei /etc/vac.cfg in den Defaultoptionen ganz am Ende der Paramter "-qnolm" hinzugefügt werden.

In den VAC bzw. XLC Compilern ab Version 9 kann der Evaluierungszeitraum von 60 Tagen nur noch mit Umgebungsvariablen verlängert werden. Dazu kann man z.B. in der /etc/environment folgende Variablen definieren:

XLC_EXTEND_EVAL=yes

Für den C++ Compiler ggf.:

XLCPP_EXTEND_EVAL=yes

Alternativ kann dem XLC beim Aufruf oder wieder in der /etc/vac.cfg der Parameter

-qxflag=extend_eval

mitgegeben werden. Allerdings verlängert das den Testzeitraum nur noch um vierzehn Tage. D.h. 74 Tage nach der Installation der Try und Buy Version ist dann spätestens Schluß.

(0)aixserver:/usr/vacpp/bin > xlC /tmp/hallo.c -o hello

The license for the Evaluation version of IBM XL C/C++ for AIX, V10.1 compiler product has expired. Please send an email to compiler@ca.ibm.com for information on purchasing the product.

<Top>

XLC 11 -> https://www.ibm.com/developerworks/downloads/r/xlcplusaix/

<Top>

Compiler testen

Hello World in 2 Variationen - für xlc und xlC.

1. Create the following C program and name the source file hello.c:

#include <stdio.h>

int main(void)

{

printf("Hello World!\n");

return 0;

}

2. Compile the program:

* If short invocation commands have been set up, enter the

following command:

xlc hello.c -o hello

* If short invocation commands have not been set up, enter the

following command:

/opt/ibmcmp/vacpp/8.0/bin/xlc hello.c -o hello

3. Run the program by entering the following command:

./hello

The result should be "Hello World!".

4. Check the exit code of the program by entering the following

command:

echo $?

The result should be 0.

5. Create the following C++ program and name the source file hello.cpp:

#include <iostream>

int main()

{

std::cout << "Hello World!" << std::endl;

return 0;

}

6. Use the xlC command to compile the test program.

Compile the program:

* If short invocation commands have been set up, enter the

following command:

xlC hello.cpp -o hello

* If short invocation commands have not been set up, enter the

following command:

/opt/ibmcmp/vacpp/8.0/bin/xlC hello.cpp -o hello

7. Run the program:

./hello

The result should be "Hello World!".

8. Check the exit code of the program:

echo $?

The result should be "0".

<Top>

IBM Debugger

IDEBUG wird überschrieben vom IBMDEBUGER 6.1, war vorher z.B. IDEBUG V.9 installiert bleiben folgende Einträge in der Liste der installierten Pakete:

[...]

idebug.rte.hpj 99.99.9999.9999 COMMITTED Supersede Entry - Not really

idebug.rte.jre 99.99.9999.9999 COMMITTED Supersede Entry - Not really

idebug.rte.olt.Java

idebug.rte.olt.client

idebug.server 99.99.9999.9999 COMMITTED Supersede Entry - Not really

idebug.server.olt 99.99.9999.9999 COMMITTED Supersede Entry - Not really

[...]

Diese Pakete lassen sich nicht mehr de-installieren. Um die Einträge loszuwerden muß man den IBMDEBUGGER deinstallieren.

Name Level Part Event Result

-------------------------------------------------------------------------------

ibmdebugger.engine.msg.en_U 6.1.0.0 USR DEINSTALL

SUCCESS

ibmdebugger.jre 6.1.0.0 USR DEINSTALL

SUCCESS

ibmdebugger.ui 6.1.0.0 USR DEINSTALL

SUCCESS

ibmdebugger.engine 6.1.0.0 USR DEINSTALL

SUCCESS

ibmdebugger 6.1.0.0 ROOT DEINSTALL

SUCCESS

ibmdebugger 6.1.0.0 USR DEINSTALL

SUCCESS

Mit der Deinstallation der Version 6.1 verschwinden auch die alten Einträge des IDEBUG. Nun kann entweder der vorherige IDEBUG oder der neue IBMDEBUGGER installiert werden.

<Top>

Probleme mit hängenden Prozessen

Ein Artikel zum Thema MustGather: Data collection for Hang or Performance related issues on AIX