Kurze Frage zum .so import

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
xperience2003
Beiträge: 910
Registriert: 04.10.2004 18:42
Computerausstattung: A1200, KS3.1, 128mb Fast, WB3.1
A4k, KS3.1, 256mb Fast, WB 3.9, RTG
und irgend nen lappy mit linux drauf
Wohnort: gotha

Kurze Frage zum .so import

Beitrag von xperience2003 »

habe eben spassenshalber eine .so mit einem befehl erstellt
sie war 22kb gross

habe dann ein testprogramm was nur darin bestand
den einen befehl mit importc zu importen und ihn dann aufgerufen

die exe ist auch 23kb, dann hab ich die .so aus dem verzeichnis genommen
die exe geht immer noch

kann es sein das die .so statisch gelinkt wird?
amiga rulez...und dann noch linux oder so
ccode_new
Beiträge: 1072
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Kurze Frage zum .so import

Beitrag von ccode_new »

Hallo xperience2003!

Ich merke hier noch recht viel Unwissen in Bezug auf die Erstellung und Benutzung externer Libs (als shared oder static).
die exe ist auch 23kb, dann hab ich die .so aus dem verzeichnis genommen
die exe geht immer noch

kann es sein das die .so statisch gelinkt wird?
Wie hast du das "Shared Object" erstellt?
->Bei einem "Shared Object oder einer DLL wird diese nicht statich mit gelinkt.

Wenn du aber deine ".so" als ".o" (ohne nachfolgendes Linken zu einem ausführbaren Programms) erstellt hast kannst du diese auch statisch linken.

Die Größe einer .dll/.so liegt auch an der Größe des darin befindlichen Codes.

Wenn PureBasic aber eine gleiche .so schon im dafür vorgesehen Systemverzeichnis findet (Angaben z.B. so: -lm, -lsqlite, ..) können diese auch ohne zusätzliche Pfadangabe dynamisch verknüpft werden.
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.
xperience2003
Beiträge: 910
Registriert: 04.10.2004 18:42
Computerausstattung: A1200, KS3.1, 128mb Fast, WB3.1
A4k, KS3.1, 256mb Fast, WB 3.9, RTG
und irgend nen lappy mit linux drauf
Wohnort: gotha

Re: Kurze Frage zum .so import

Beitrag von xperience2003 »

ok, dann wars wohl zufall

aber, gibt es einen weg das pb-compilat , wenn es noch ein .o ist
"abzufangen", bevor der linker die so draus macht
oder umgekehrt, aus der .so ein statisches .o zu machen?

---
also mein ziel ist es, mit pb eine kleine lib zu bauen
die ich dann weitergeben kann

die der anwender dann aber mit einlinken kann, ohne
das er noch die .so im verzeichniss hat, also nen stand-alone exe
amiga rulez...und dann noch linux oder so
ccode_new
Beiträge: 1072
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Kurze Frage zum .so import

Beitrag von ccode_new »

Ich würde dir abraten statisch zu linken.

Bei den nächsten PB-Versionen könnte es schon nicht mehr funktionieren.

So und nun der Reihe nach:

1.
Purebasic kann keine statischen .a/.lib/... erstellen.

2.
Es ist über den -c Argument beim Purebasic-Compiler möglich eine .asm -Datei zu erstellen.
Diese kann dann unter Linux mit dem fasm übersetzt werden.
Dabei entsteht auch eine .o(Object)-Datei.
Wenn man diese aber einfach statisch linken möchte hat man dieses Problem: "multiple definition" :mrgreen:

3.
Du könntest eine statische Lib in einer anderen Programmiersprache (auf dem selben System) erstellen und diese versuchen über den Import - Befehl einzubinden.

4.
Es ist besser eine Art ausführbares Programmarchiv/Installer für dein Programm zu verwenden.
Z.Bsp. könntest du ein .deb-Archiv (Unter Debian based Linux-Versions) erstellen und deine .so -Dateien sauber in ein /usr/lib -Verzeichnis installieren lassen.
(.deb - Installerdateien lassen sich unter Linux sehr schön mit diesem Tool erstellen: debreate)

5.
Vielleicht fällt jemanden noch eine bessere Lösung ein.

Anbei:
Eine weitere (mit Bedacht) abzuwegende Möglichkeit wäre: OpenSource
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.
Antworten