Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Beispiel 3: Übersetzen eines C-Quellprogramms, das in einer POSIX- Datei steht und POSIX-Bibliotheksfunktionen benutzt

&pagelevel(4)&pagelevel

Das C-Quellprogramm steht als POSIX-Quelldatei mit dem Namen hallo.c in dem Dateiverzeichnis /USERIDXY/source. Das Programm benutzt POSIX-Bibliotheksfunktionen. Der Compiler erzeugt ein LLM und schreibt dieses in eine POSIX-Objektdatei mit dem Standardnamen hallo.o. Diese Objektdatei wird im Dateiverzeichnis des Quellprogramms abgelegt. Die Objektdatei wird anschließend in der POSIX-Shell-Umgebung weiterverarbeitet.

Quellprogramm-Datei hallo.c

#include <stdio.h>
FILE *fp;
int main(void)
{
  printf("Hallo, ich bin ein C-Programm\n");
  fp = fopen("/USERIDXY/posixfiles/hallo", "w");
  fputs("hallo", fp);
  fclose(fp);
  return 0;
}

Das Quellprogramm wurde mit dem EDT erstellt und mit der Anweisung @XWRITE FILE=/USERIDXY/source/hallo.c abgespeichert.

Ablaufprotokoll zum Übersetzen, Binden und Starten

(IN)   bedeutet Benutzereingaben
(OUT)  bedeutet System/Programm-Meldungen
(IN)   /START-CPLUS-COMPILER ——————————————————————————————————————————  (1) 
(OUT)  %  BLS0523 ELEMENT ’SDFCC’, VERSION ’04.0B02’, TYPE ’L’ FROM LIBRARY
         ’:P401:$TSOS.SYSLNK.CPP.040’ IN PROCESS
(OUT)  %  BLS0524 LLM ’SDFCC’, VERSION ’04.0B02’ OF ’2023-04-02 13:40:11’ 
          LOADED
(OUT)  %  BLS0551 COPYRIGHT (C) 2023 Fujitsu Technology Solutions GmbH. ALL
          RIGHTS RESERVED
(OUT)  %  CDR9992 : BEGIN C/C++ VERSION 04.0B02
(IN)   //MOD-SOURCE-PROP LANG=*C,DEFINE=_OSD_POSIX ————————————————————  (2) 
(IN)   //MOD-INCL-LIB STD-INCL=($.SYSLIB.POSIX-HEADER,*STANDARD-LIB) ——  (3) 
(IN)   //COMPILE SOURCE='/USERIDXY/source/hallo.c',-
       //MODULE-OUTPUT=*SOURCE-LOC ————————————————————————————————————  (4) 
(OUT)  %  CDR9907 : NOTES: 0  WARNINGS: 0  ERRORS: 0  FATALS: 0
(OUT)  %  CDR9937 : MODULES GENERATED, CPU TIME USED: 0.3829 SECONDS
(IN)   //END ——————————————————————————————————————————————————————————  (5) 
(OUT)  %  CDR9936 END; SUMMARY: NOTES: 0  WARNINGS: 0  ERRORS: 0  FATALS: 0 
(OUT)  %  CCM0998 CPU TIME USED: 0.3829 SECONDS
(IN)   /START-POSIX-SHELL —————————————————————————————————————————————  (6) 
(OUT)  POSIX Basisshell 10.0A45 created Jun 14 2016
       POSIX Shell 10.0A45 created Jul 12 2016
       Copyright (C) Fujitsu Technology Solutions 2009
                     All Rights reserved
       Last login: Thu Mar 26 10:45:44 2020 on term/002
(IN)   cd source ——————————————————————————————————————————————————————  (7) 
(IN)   ls hallo* ——————————————————————————————————————————————————————  (8) 
(OUT)  hallo.c    hallo.o
(IN)   cc hallo.o —————————————————————————————————————————————————————  (9) 
(IN)   a.out —————————————————————————————————————————————————————————— (10) 
(OUT)  Hallo, ich bin ein C-Programm

(1)

Der Compilerlauf wird gestartet.

(2)

Mit der MODIFY-SOURCE-PROPERTIES-Anweisung wird der Sprachmodus C eingeschaltet (voreingestellt ist der Sprachmodus C++) und das für die Nutzung der POSIX-Bibliotheksfunktionen notwendige Define _OSD_POSIX gesetzt.

(3)

Mit der MODIFY-INCLUDE-LIBRARIES-Anweisung wird zusätzlich zur CRTE-Bibliothek $.SYSLIB.CRTE (*STANDARD-LIBRARY) die Bibliothek zugewiesen, die die Standard-Include-Elemente für die POSIX-Bibliotheksfunktionen enthält ($.SYSLIB.POSIX-HEADER).

(4)

Mit der COMPILE-Anweisung wird der Übersetzungslauf gestartet. Mit der SOURCE-Option wird der absolute Pfadname der zu übersetzenden POSIX-Quelldatei angegeben. POSIX-Dateinamen müssen immer in Hochkommas eingeschlossen werden. Der Operandenwert *SOURCE-LOCATION in der MODULE-OUTPUT-Option bewirkt, dass das übersetzte Modul in eine POSIX-Objektdatei mit dem Standardnamen hallo.o geschrieben und im Dateiverzeichnis des Quellprogramms abgelegt wird.

(5)

Mit der END-Anweisung wird der Compilerlauf beendet.

(6)

Da POSIX-Objektdateien nur im POSIX-Subsystem weiterverarbeitet werden können, wird mit dem POSIX-Kommando START-POSIX-SHELL aus der BS2000-Systemumgebung (SDF) in die POSIX-Umgebung (Shell) gewechselt. Nach Aufruf des Kommandos befindet man sich im Home-Dateiverzeichnis der aktuellen BS2000-Benutzerkennung (USERIDXY).

(7)

Mit dem POSIX-Kommando cd wird in das Dateiverzeichnis source gewechselt, in dem sich das Quellprogramm und die vom Compiler erzeugte Objektdatei befindet.

(8)

Nach Eingabe des POSIX-Kommandos ls werden die Quelldatei hallo.c und die Objektdatei hallo.o aufgelistet.

(9)

Mit dem POSIX-Kommando cc wird die Objektdatei hallo.o zu einer ablauffähigen Einheit gebunden und in eine ausführbare POSIX-Datei mit dem Standardnamen a.out geschrieben. Das cc-Kommando ist ausführlich im Handbuch „POSIX-Kommandos des C/C++-Compilers“ [1] beschrieben.

(10)

Das Programm wird ausgeführt.