Ups, da hab ich mich wohl zu undeutlich ausgedrückt.
Ziel ist mit gpc generierten Objectcode (*.o) mit SUN's f77 (muss Bedingung) zu linken. Das Hauptprogramm ist in FORTRAN geschrieben; es sollen vorhandene PASCAL Module ohne grösseren Aufwand in ein FORTRAN Programm übernommen werden können (Heimarbeit).
Gruss, Roland
-----Ursprüngliche Nachricht----- Von: gpc-de-owner@gnu.de [mailto:gpc-de-owner@gnu.de] Im Auftrag von Frank Heckenbach Gesendet: Dienstag, 4. Februar 2003 01:39 An: gpc-de@gnu.de Betreff: Re: gpc Kompilat mit native F77 von SUN
Roland Rick schrieb:
Komme gerne auf Dein Abgebot zurück, mich bei Problemen zu melden ;)
Installierter gcc: 3.2 (statt 2.95.???)
Kleines Problem:
- MUSS mit SUN's f77 kompilierbar sein.
- dieses kennt kein -lgpc -lm, dort muss es -lpfc -lpc heissen.
mod01.pas wurde wie folgt kompiliert: $ gpc -g -c mod01.pas
Tja, leider folgende Linkermeldungen: $ f77 mod01.o -g fmain.f -lpfc -lpc -L /usr/local/lib/gcc-lib/sparc-sun-solaris 2.8/2.95.2/libgpc.a fmain.f: MAIN fmain: Undefined first referenced symbol in file _p_atexit mod01.o ld: fatal: Symbol referencing errors. No output written to a.out
Gleicher Versuch mit g77 (GNU F77 compiler): $ g77 mod01.o -g fmain.f -lgpc -lm -L /usr/local/lib/gcc-lib/sparc-sun-solaris2 .8/2.95.2/libgpc.a ld: fatal: library -lgpc: not found ld: fatal: File processing errors. No output written to a.out collect2: ld returned 1 exit status
Hmmmmm: Wieso findet er -lgpc nicht? $ echo $LD_LIBRARY_PATH /usr/lib:/usr/local/lib ==> Müsste doch eigentlich gehen, oder?
Also, offenbar liegt da eine kleine Verwechslung vor. libgpc (beim Linker als -lgpc angegeben) ist die Laufzeit-Bibliothek von GPC. Diese wird benötigt, um irgendwas zu linken, was mit GPC compiliert wurde. (Außerdem benötigt es die Mathe-Bibliothek, -lm, die aber vorhanden sein dürfte.) Also muss auf dem System GPC installiert werden (oder zumindest libgpc.a von einem anderen System kopiert werden).
-lpfc -lpc sind anscheinend die Laufzeit-Bibliotheken von Suns Compiler -- ich weiß jetzt nicht genau, ob sie zu pc oder Fortran gehören. Ersteres kann man vergessen, da ja pc nicht benutzt werden soll. Wenn Letzteres, einfach zusätzlich mitlinken (obwohl ich erwartet hätte, dass f77 das automatisch macht, wenn man damit linkt).
Das Dumme an `pc' ist nur, dass ich aus dem zu
compilierendem Delphi Source
alle `Advantages' von Borland/Delphi PASCAL entfernen muss, was mich ziemlich ansch**ss*.
Arghhh: So wird aus z.B. aus var s: string[80]; folgendes var s: varying[80] of char; und alle Vorteile die das UNIT Konzept bringt gehen
dummerweise auch flöten.
Super, oder?
Die Delphi Source lässt sich ohne grössere Modifikationen per `gpc' kompilieren. Jetzt gilt's nur noch das Problem zu lösen,
wie ich das mit f77
kompilieren/linken kann (wenn das überhaupt geht).
Compilieren sicher nicht (das ist ja ein Fortran-Compiler). Eine mit GPC compilierte Datei linken sollte gehen. (Es können allerdings kleine Konflikte auftreten, die man dann beheben müsste. Ich weiß nicht, ob das schon mal jemand probiert hat ...)
Wichtig: Zielkunde kann und will kein `gpc' etc. verwenden :(
Sofern du die Sachen compilierst und er sie nicht ändern will/muss, und du ihm wie gesagt libgpc.a gibst (bitte §3 der GPL beachten), müsste es gehen -- außerdem evtl. libgcc.a, wenn die GPC-Backend-Version eine andere ist als die installierte GCC-Version.
Frank
-- Frank Heckenbach, frank@g-n-u.de, http://fjf.gnu.de/, 7977168E GPC To-Do list, latest features, fixed bugs: http://www.gnu-pascal.de/todo.html GPC download signing key: 51FF C1F0 1A77 C6C2 4482 4DDC 117A 9773 7F88 1707