Forum: Compiler & IDEs Lazarus auf MacOS findet -lc nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Habe hier ein Lazarus-Projekt (CQRlog), welches ich vor einiger Zeit auf 
MacOS schon erfolgreich compiliert hatte.

Jetzt wollte ich für einen Test was ändern, aber der Linker findet die 
C-Standardbibliothek (-lc) nicht mehr – an den Projekteinstellungen 
wurde jedoch in der Zeit nichts geändert. Kann allerdings sein, dass es 
mittlerweile mal einen XCode-Update gab.

Hat jemand eine Idee, woher diese Bibliothek kommen müsste?

von C-hater (c-hater)


Lesenswert?

Jörg W. schrieb:

> Jetzt wollte ich für einen Test was ändern, aber der Linker findet die
> C-Standardbibliothek (-lc) nicht mehr

???

Lazarus benutzt FreePascal, richtig? Und der fpc kennt nach meinem 
Wissen keine Option -lc. Zumindest ist in der im Internet verfügbaren 
Doku keine derartige Option gelistet.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Tja, ich kann dir nur sagen, dass der Linker sich drüber beschwert 
(cannot find library -lc).
Dem Teil eine komplette Kommandozeile zu entlocken, die er aufruft, ist 
mir noch nicht gelungen.

: Bearbeitet durch Moderator
von Peter K. (Gast)


Lesenswert?

https://forum.lazarus.freepascal.org/index.php?topic=39431.0


mal mit libc versucht?
https://wiki.freepascal.org/libc_library

{$linklib c} is indeed the only correct way, and this is an error in the 
manual.

-k-lc just passes the "-lc" command line parameter to the linker, 
without the compiler having any clue about what it does. This means that 
the C library will be linked, but nothing else gets changed.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gerade mal ein rekursives Grep drüber geschickt. Sieht so aus, als ob 
beispielsweise OpenSSL da nach "Libc" ruft.

Die Frage für mich ist ja nur: an der Lazarus- oder 
FreePascal-Installation habe ich seit dem letzten erfolgreichen Compile 
nie was geändert. Kann nur sein, dass ich das zugrunde liegende XCode 
(Compiler / Development-Tools auf MacOS) mal aktualisiert habe. Selbst 
habe ich an solchen Optionen sowieso nichts gedreht.

Wo zum Geier sucht er denn überhaupt eine libc und warum sollte sie 
plötzlich entschwunden sein?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich hatte gestern Abend schon mal eine Suchmaschine angeworfen, aber 
irgendwie nichts sinnvoll passendes gefunden. Das hier:

https://forum.lazarus.freepascal.org/index.php?topic=61430.0

könnte als Hinweis passen. Bin mir eigentlich ziemlich sicher, dass ich 
die XCode command-line tools schon hatte (sonst hätte es ja früher nicht 
funktioniert), aber muss man die nach dem Upgrade von XCode jetzt erneut 
nachziehen. Mache ich gerade, braucht nur noch paar Minuten.

von Markus F. (mfro)


Lesenswert?

die XCode-Commandline-Tools funktionieren nur, wenn man die 
Lizenzbedingungen akzeptiert hat (das ist für jede Version aufs Neue 
notwendig).

Dafür einmal eins der Tools (git, z.B.) von der Kommandozeile aus 
aufrufen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

xcode-select --install

hat zwar was installiert, aber der Fehler ist trotzdem noch da. :-/

Nochmal gucken, ob man dem Lazarus da noch irgendwelche Pfade 
aktualisieren muss.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Irgendwie hätte man das wohl in (/opt/local)/etc/fpc.cfg ändern müssen.

Habe dann kurzerhand fpc und lazarus deinstalliert und neu installiert. 
Dabei wird fpc.cfg sowieso neu gebaut. Nachdem ich den gtk2-Modul wieder 
debuggt habe*), und in fpc.cfg noch den Macports-Pfad für die 
Bibliotheken nachgetragen habe, lässt es sich zumindest bauen. Es spuckt 
allerdings beim Linken jetzt noch massig Meldungen über nicht passende 
SDK-Versionen zwischen den FPC-Modulen und meinem aktuellen Compilat 
aus, das muss ich mir nochmal ansehen.

*) Da fehlt ein $ifdef:
1
{$IFDEF HASX}
2
    FWSFrameRect := Rect(0, 0, 0, 0);
3
{$ENDIF}

FWSFrameRect wird an anderen Stellen nur innerhalb "HASX" angelegt, aber 
hier ohne das $ifdef referenziert (MacOS benutzt kein X11). Wenn mir 
einer sagen kann, wo ich das als Bug berichten kann, mach ich es.

von Peter K. (Gast)


Lesenswert?

https://wiki.freepascal.org/How_do_I_create_a_bug_report/de
oder
https://forum.lazarus.freepascal.org/index.php?topic=41538.0

Linux und MacOs sind natürlich auch eine schlechter gepflegte 
Kombination als Windows

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Danke, die Pointer dort funktionieren zwar nicht mehr, weil sie 
inzwischen auf Gitlab umgezogen sind, aber da habe ich zumindest eh 
schon einen Account. Hab's mal eingetütet.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bugreport hat sich gelohnt: mein vorgeschlagener Patch (sehr simpel, nur 
ein $IFDEF HASX um eine Zeile herum) wurde innerhalb eines Tages 
eingepflegt.

von Peter K. (Gast)


Lesenswert?

jepp, die Pascal, Freepascal bzw. Lazarus Pascal Community macht echt 
Spaß.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.