Seite 2 von 2

Re: PB 4.6 Linkerfehler unter OpenSuse 12.1

Verfasst: 21.11.2011 23:35
von remi_meier
Ramihyn_ hat geschrieben:
manke hat geschrieben:Und außerdem, irgendetwas stimmt ja nicht, unter dem alten OpenSuse 11.4 lief ja auch schon alles mit Pb 4.6. Erstaunlicherweise laufen jetzt auch die meisten noch unter OpenSuse 11.4 erstellten Compilate nicht mehr, ein kleines Spiel läuft aber problemlos (lässt sich nur nicht mehr neu kompilieren). Einige Beispiele aus dem Examples Ordner laufen übrigens, z.B. das Canvasgadget.pb. Irgendwie müssen doch einige Bibliotheken unter dem neuen Suse nicht richtig installiert sein, obwohl Checkinstall.sh alles in Ordnung meldet.
Klar ist da was oberfaul und eine Reihe ImportC Zeilen einzufügen ist auch nur eine Notlösung. Vielleicht hast Du aber auch eine falsche Option zur Kompilation angegeben? Z.B. eine GUI Anwendung versucht als "Console" oder ".so/Library" zu übersetzen? Vielleicht ist es aber auch ein PureBasic Bug beim Linken, da gibt es offenbar mehrere.
Klar ist das ein PB-Bug. Wechsel in Abhängigkeiten und Library-
Namen gehören in Linux zum Alltag. PB ist der einzige Compiler,
den ich kenne, welcher die Libraries selbst linken möchte und dennoch
nicht per pkg-config nachschaut, wo die denn sind.

Ich weiss mir ja zu helfen, aber Linux-Anfänger verstehen solche
Fehlermeldungen, die nicht von PureBasic selbst kommen, einfach
nicht. Da muss noch einiges poliert werden an der Linux-Version :)

Re: PB 4.6 Linkerfehler unter OpenSuse 12.1

Verfasst: 21.11.2011 23:57
von ts-soft
@remi_meier

wie geht das?

Code: Alles auswählen

Debug GetEnvironmentVariable("PKG_CONFIG_PATH")
gibt nen Leerstring zurück, genauso wie:

Code: Alles auswählen

echo $PKG_CONFIG_PATH
So hab ich das von der dt. Wikepedia verstanden um den Pfad der .pc Dateien zu finden.

Gruß
Thomas

Re: PB 4.6 Linkerfehler unter OpenSuse 12.1

Verfasst: 22.11.2011 13:41
von remi_meier
Gemäss Wikipedia steht der Pfad in der Man-Page. Da
steht bei mir
PKG_CONFIG_PATH
A colon-separated (on Windows, semicolon-separated) list of directories
to search for .pc files. The default directory will always be searched
after searching the path; the default is
libdir/pkgconfig:datadir/pkgconfig where libdir is the libdir for pkg-
config and datadir is the datadir for pkg-config when it was installed.
Unter Ubuntu sind die .pc-Files unter "/usr/lib/pkg‐config",
man kann aber mit PKG_CONFIG_PATH noch weitere Orte
für .pc-Files angeben. Z. B. um den aktuellen Pfad hinzuzufügen:
PKG_CONFIG_PATH=./ pkg-config --libs mylib
Der Pfad könnte für jede Distribution unterschiedlich sein.

Was PB machen sollte:
Für jede Library, welche extern benötigt wird (z. B. zlib),
ganz einfach
pkg-config --libs zlib
aufrufen. Das gibt dann alle Linker-Parameter zurück, welche
für das Linken der Library nötig sind.
Wenn man mal den Namen der Library nicht kenn, kann man
alle installierten per
pkg-config --list-all | less
anschauen und die richtige raussuchen.

Re: PB 4.6 Linkerfehler unter OpenSuse 12.1

Verfasst: 23.11.2011 19:05
von manke
Jetzt kommt keine Fehlermeldung des Linkers mehr! Aber wenn der interne Debugger aktiv ist, kommt die Meldung, es könne nicht mit dem internen Degugger gearbeitet werden, ich solle einen externen Debugger verwenden. Wenn der Debugger ausgeschaltet ist, tut sich nach dem Kompilieren (F5) einfach gar nichts.

Aber jetzt:
Der Quelltext befand sich auf einer VFAT-Partition. Er wurde nämlich unter Windows und Linux übersetzt in das jeweilige Programm (mit wenigen Compilerdirektiven, die Besonderheiten von Linux oder Windows enthielten). Jetzt habe ich den Quelltext in die home-Partition von Linux kopiert und dort funktioniert jetzt alles ohne Fehlermeldunden und auch ein Executable lässt sich wieder erstellen! Auch der interne Debugger läuft wieder. Allerdings wenn man die Importbefehle für die beiden Bibliotheken entfernt, läuft es auch dort nicht. Es lag also nicht nur an der Lokalisation des Quelltextes auf der VFAT-Partition und des Executable auf der Ext4-Partition von Linux. Aber immerhin, mein Programm läuft wieder!

Ich verwende übrigens immernoch konsequent die 32-bit-Versionen von Pb unter Linux und Windows (der Rechner ist 64 bit). Ich wollte ein funktionierendes Systems bisher nicht auf ein neues wechseln, von dem ich nicht weiß, ob es große Vorteile bietet und stabil läuft.