Wieso muss ich vielfach auch bei FPC die xxx-dev Packete installieren ?
ZB. "libsdl1.2-dev" wen ich SDL in Lazarus verwenden will.
Eine fertige EXE braucht diese xxx-dev nicht mehr.
Ich dachte immer, die xxx-dev seien nur da, um die *.H für C/C++ zu installieren.
Und FPC greift direkt auf die *.o zB. libSDL.so
Was habe ich da übersehen, das ich in Lazarus auch die xxx-dev brauche ?
Wieso xxx-dev für FPC installieren ?
-
- Beiträge: 6910
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Wieso xxx-dev für FPC installieren ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Wieso xxx-dev für FPC installieren ?
Ganz einfach, die Distributionen (nicht das Lazarus Team !!) haben entschieden, das manche Links und Software halt nur in den *-dev Paketen enthalten sind. Wenn das statisch verwendet wird, so ist in der ausführbaren Datei der Code hineingelinkt. Blöd ist es zum Beispiel bei manchen DBs. Dort wird im *-dev Paket zB. nur ein weiterer Links gesetzt, damit der allgemeine Treibername gefunden wird und nicht das was gerade in normalen Paket gerade aktuell ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Wieso xxx-dev für FPC installieren ?
In diesem Falle geht es mMn nur um den SymLink.
Bei SDL heisst die gesuchte Lib aus mir unbekannten Gründen für FPC 'libSDL.so'.
$ELSE ist dann 'libSDL-1.2.so.0'. Mit letzterem würde es mMn auch ohne zusätzliche Massnahmen klappen.
Den Symlink kann man nat. auch manuell machen, ohne "devel".
Bei SDL heisst die gesuchte Lib aus mir unbekannten Gründen für FPC 'libSDL.so'.
$ELSE ist dann 'libSDL-1.2.so.0'. Mit letzterem würde es mMn auch ohne zusätzliche Massnahmen klappen.
Den Symlink kann man nat. auch manuell machen, ohne "devel".
Code: Alles auswählen
{$IFDEF UNIX}
{$IFDEF DARWIN}
...
{$ELSE}
{$IFDEF FPC}
SDLLibName = 'libSDL.so';
{$ELSE}
SDLLibName = 'libSDL-1.2.so.0';
{$ENDIF}
{$ENDIF}
{$ENDIF}
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Wieso xxx-dev für FPC installieren ?
Die *-dev Pakete installieren die Header und den Symlink von der lib*.so zur lib*.so.X.Y. Die Import Units von FPC sind versionsunabhängig gestaltet (Ausnahmen bestätigen die Regel), weswegen eben der Symlink der aktuellen Version der Bibliothek in der Distribution nötig ist. Nach dem Linken enthält die generierte ELF Datei dann einen Verweis auf die lib*.so.X.Y, statt die lib*.so, weswegen der Symlink nicht mehr nötig ist.Mathias hat geschrieben: Do 29. Dez 2022, 16:11 Ich dachte immer, die xxx-dev seien nur da, um die *.H für C/C++ zu installieren.
Und FPC greift direkt auf die *.o zB. libSDL.so
FPC Compiler Entwickler
-
- Beiträge: 6910
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Wieso xxx-dev für FPC installieren ?
@PascalDragon und @theo
Danke, gut erklärt.
Somit schon wieder so ein Gewurstel it C/C++.
Immerhin schreibt FPC einigermassen was fehlt. Aber man muss diese Regel im Kopf haben.
Wen dies kommt
Muss man das "-I" weglassen und dafür vorne "lib" anhängen und alle klein schreiben. Dann mit "TAB" drücken
Beispiel"sudo apt install libsdl-net" --> [TAB] und dann muss man in der Auswahl nach einer xxx-dev" suchen und man wird meistens fündig.
Ein Anfänger hat da echt Mühe.
Für @Theo, es gibt sogar eine libsdl-pango, somit trifft man Pango auch in sdl an.
Danke, gut erklärt.
Somit schon wieder so ein Gewurstel it C/C++.
Immerhin schreibt FPC einigermassen was fehlt. Aber man muss diese Regel im Kopf haben.
Wen dies kommt
Code: Alles auswählen
Warning: linker: /usr/bin/ld: -lSDL_net kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
Beispiel"sudo apt install libsdl-net" --> [TAB] und dann muss man in der Auswahl nach einer xxx-dev" suchen und man wird meistens fündig.
Ein Anfänger hat da echt Mühe.
Für @Theo, es gibt sogar eine libsdl-pango, somit trifft man Pango auch in sdl an.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot