PureBasic UsePNGImageEncoder()

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • hab gerade schockiert festgestellt, daß ich zu dämlich bin, einen Quellcode über die Kommandozeile zu compilieren.
      Ich krieg das echt nicht hin - etliche Varianten ausprobiert (mit Pfad, ohne Pfad // mit relativen Zielpfad usw.) - über 1.5 Stunden hab ich jetzt damit rumgefuchtelt...

      Extra einen "normal funktionierenden" Miniquellcode genommen, der 100%ig funktioniert.
      ./pbcompiler -h funktioniert ja noch wunderbar - aber sonst..

      Über die IDE wird der Testcode korrekt kompiliert (1 Sekunde ;-) ) & looft. (also der Code, ohne UsePNGImageEncoder())
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • Und das geht am einfachsten über die versteckte Datei ".bashrc" im Homeverzeichnis:
      Ganz am Ende, als neue Zeilen, einfügen:

      Quellcode

      1. export PUREBASIC_HOME=~/purebasic
      2. export PATH=$PUREBASIC_HOME/compilers:$PATH
      Nähere Infos in der "INSTALL" Datei im PB-Verzeichnis.
      Gruß Thomas

      "Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."
      ComputerInfo für PPF
    • Arrrgh... ich dachte, das wär mit Ausführen der ~/purebasic/register.sh erledigt.
      Das es aus dieser Ecke kommt hab ich nicht vermutet.

      Ok - Danke für den Hinweis - Kompilieren im Terminal klappt nun. Ein Testprogramm wird korrekt ausgeführt

      Der Testaufruf:
      strace -s 400 -Tfe execve ./pbcompiler /home/jogo/pureprojekte/0_testkram/bild_bauen_speichern.pb

      erzeugt jetzt erwartungsgemäß einen sehr großen Meldetext.
      Hab mal die gesuchte Zeile hier reinkopiert:

      Quellcode

      1. [pid 3183] execve("/usr/bin/ld", ["/usr/bin/ld", "-plugin", "/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so", "-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper", "-plugin-opt=-fresolution=/tmp/cc199p53.res", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lc", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_s", "--sysroot=/", "--build-id", "--eh-frame-hdr", "-m", "elf_x86_64", "--hash-style=gnu", "--as-needed", "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", "-z", "relro", "-o", "/home/jogo/purebasic/compilers/purebasic.out", "-s", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o", "/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o", "-L/home/jogo/purebasic/purelibraries/linux/libraries", "-L/usr/lib/gcc/x86_64-linux-gnu/5", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib", "-L/lib/x86_64-linux-gnu", "-L/lib/../lib", "-L/usr/lib/x86_64-linux-gnu", "-L/usr/lib/../lib", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..", "--hash-style=both", "purebasic.o", "--wrap=memcpy", "/home/jogo/purebasic/compilers/debugger.a", "ImagePluginPNG.a", "ImagePluginJPEG.a", "2DDrawing.a", "Image.a", "LinkedList.a", "ImagePluginBMP.a", "ImagePlugin.a", "VectorDrawing.a", "String.a", "Memory.a", "/home/jogo/purebasic/compilers/objectmanager.a", "GtkBase.a", "SimpleList.a", "Shared.a", "ImagePluginPNG.a", "ImagePluginJPEG.a", "2DDrawing.a", "Image.a", "LinkedList.a", "ImagePluginBMP.a", "ImagePlugin.a", "VectorDrawing.a", "String.a", "Memory.a", "/home/jogo/purebasic/compilers/objectmanager.a", "GtkBase.a", "SimpleList.a", "Shared.a", "-lpbpng", "-lz", "-lm", "-lpbjpeg", "-lcairo", "-lpthread", "-lgtk-3", "-lgdk-3", "-lpangocairo-1.0", "-lpango-1.0", "-latk-1.0", "-lcairo-gobject", "-lcairo", "-lgdk_pixbuf-2.0", "-lgio-2.0", "-lgobject-2.0", "-lglib-2.0", "-lX11", "-lc", "/home/jogo/purebasic/compilers/systembase.a", "/home/jogo/purebasic/compilers/stringutility.a", "/home/jogo/purebasic/compilers/stringmanager.a", "/home/jogo/purebasic/compilers/systembase.a", "/home/jogo/purebasic/compilers/unicodefunctions.a", "/home/jogo/purebasic/compilers/stringutility.a", "/home/jogo/purebasic/compilers/unicodefunctions.a", "/home/jogo/purebasic/compilers/stringmanager.a", "-ldl", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "-lc", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o"], [/* 64 vars */]) = 0 <0.000488>
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • JörgG schrieb:

      ich dachte, das wär mit Ausführen der ~/purebasic/register.sh erledigt.
      Die registriert nur den Mime-Typ, bzw. die Unterklassen zu Text und trägt das in die Datenbank ein. Auf diese Art kennt Linux jetzt *.pb, *.pbi und kann diese Dateien dann purebasic zuordnen. Ist auf meinen Mist gewachsen :-D
      Gruß Thomas

      "Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."
      ComputerInfo für PPF
    • echt, ist von dir? Cool 8-)
      Dann könntest ja für das nächste Release die beiden Einträge auch dort einbauen oder? Passt ja eigentlich da rein.

      Kommt ja sicherlich seltener vor, das man über das Terminal compiliert. Aber wenn, dann denkt bestimmt keiner mehr daran, die ".bashrc" zu modifizieren. (was ja nicht schlimm ist - aber erstmal drauf kommen) :-)
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • langsam verheddere ich mich mit den unterschiedlichen Varianten.
      Hab jetzt 2 Testvarianten mit je 1xTerminal/1x IDE gemacht und die Fehlerausgaben aufbereitet:

      Quellcode

      1. ||||||||| Mit TEMPORÄRER libz 1.2.11 beim IDE-Start (global: 1.2.8)
      2. =========== Terminal ============
      3. ******************************************
      4. PureBasic 5.73 LTS (Linux - x64)
      5. ******************************************
      6. Loading external modules...
      7. Starting compilation...
      8. Starting compilation...
      9. 25 lines processed.
      10. Creating the executable.
      11. Error: Linker
      12. /home/jogo/purebasic/purelibraries/linux/libraries/libpbpng.a(pngrutil.o): In Funktion `png_inflate_claim':
      13. pngrutil.c:(.text+0x343): Nicht definierter Verweis auf `inflateValidate'
      14. collect2: error: ld returned 1 exit status
      15. jogo@jogo-ThinkPad-T61 ~/purebasic/compilers $
      16. =============== IDE =====================
      17. PureBasic - Linker error
      18. /home/jogo/purebasic/purelibraries/linux/libraries/libpbpng.a(pngrutil.o): In Funktion `png_inflate_claim':
      19. pngrutil.c:(.text+0x343): Nicht definierter Verweis auf `inflateValidate'
      20. collect2: error: ld returned 1 exit status
      Alles anzeigen

      Quellcode

      1. |||||||||| Mit GLOBALER libz 1.2.11 (IDE-Start ganz normal ohne Startscript- weil neue libz ja global)
      2. =========== Terminal ============
      3. ******************************************
      4. PureBasic 5.73 LTS (Linux - x64)
      5. ******************************************
      6. Loading external modules...
      7. Starting compilation...
      8. Starting compilation...
      9. 25 lines processed.
      10. Creating the executable.
      11. Error: Linker
      12. /usr/bin/ld: /home/jogo/purebasic/purelibraries/linux/libraries/libpbpng.a(pngrutil.o): undefined reference to symbol 'inflateValidate@@ZLIB_1.2.9'
      13. //lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO aus der Kommandozeile fehlt
      14. collect2: error: ld returned 1 exit status
      15. jogo@jogo-ThinkPad-T500 ~/purebasic/compilers $
      16. =============== IDE =====================
      17. PureBasic - Linker error
      18. /usr/bin/ld: /home/jogo/purebasic/purelibraries/linux/libraries/libpbpng.a(pngrutil.o): undefined reference to symbol 'inflateValidate@@ZLIB_1.2.9'
      19. //lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO aus der Kommandozeile fehlt
      20. collect2: error: ld returned 1 exit status
      Alles anzeigen
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • Also ich könnte mir vorstellen, dass beim Linken irgendwie zwei verschiedene "libz" verwendet werden; eventuell benutzt er zuerst eine libz.a, findet dort aber das "inflateValidate"-Symbol nicht, und zeigt deshalb den Fehler mit der libz.so, in der er das Symbol gefunden hat.

      Um das rauszufinden, müsstest du mal in alle folgenden Ordner gehen:

      Quellcode

      1. /home/jogo/purebasic/purelibraries/linux/libraries
      2. /usr/lib/gcc/x86_64-linux-gnu/5
      3. /usr/lib/x86_64-linux-gnu
      4. /usr/lib
      5. /lib/x86_64-linux-gnu
      6. /lib/

      Und jeweils schauen, ob es dort "libz.a" oder "libz.so" gibt (oder eventuell mit einer Zahl am Ende des Dateinamens).

      Und dann für jede Datei folgenden Befehl ausführen:

      Quellcode

      1. $ strings DATEINAME | grep inflateValidate | wc -l

      Der Befehl schaut, ob in der Datei die "inflateValidate"-Funktion vorhanden ist. Er sollte also bei allen Dateien eine Zahl größer 0 ausgeben.
    • Neu

      Danke für den neuen Ansatz.
      Hab deine Anleitung mal auf 2 verschiedene Systeme ausgeführt.
      Mint 18.3 & Mint 19.3
      Bei unterschiedlichen Ausgaben habe ich die entsprechenden Stellen kommentiert..
      QuellcodeQuellcode bearbeiten


      /home/jogo/purebasic/purelibraries/linux/libraries

      -> zlib.a = 2


      /usr/lib/gcc/x86_64-linux-gnu/5

      -> nicht vorhanden


      /usr/lib/x86_64-linux-gnu

      -> libz.a = 0 // mint19: libz.a = 2

      -> libz.so strings: ‚libz.so‛: Keine solche Datei (Meldung nur mint18)

      -> = 0 // mint19: libz.so = 1


      /usr/lib

      -> nicht vorhanden


      /lib/x86_64-linux-gnu

      -> libz.so.1 = 1 (mint19)

      -> libz.so.1.2.11 = 1 (mint19) //auf T61 mit org. libz.so.1.2.8 = 0


      /lib/

      -> nicht vorhanden
      [/list]

      Interessant ist das Verzeichnis /usr/lib/x86_64-linux-gnu[/b]/[/b]
      Bin fast geneigt, die beiden Dateien von Mint19 in ein Mint18 zu kopieren, dann Mint18 neustarten - den Kopf einziehen - schauen, was passiert..
      Was meinst du dazu?
      Wäre dann die 2. Stelle, an der ich in Mint18 neuere libs aus Mint19 unterschiebe.
      /lib/x86_64-linux-gnu/[/b] hat Mint 18.3 (bis jetzt) ja gut verdaut.
      Wenn das keine ewig fortlaufende "Erneuerungskette" wird, könnt ich bis dahin gut mit leben (falls ich damit ein positives Ergebnis erziele).
      Ansonsten hätte ich wohl irgendwann Mint18 Häppchenweise per Hand auf 19.3 aktualisiert :-)
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • Neu

      Hm, als erstes könntest du mal probieren, wenn du die "zlib.a" im Purebasic Verzeichnis nimmst und kopierst in eine "libz.a". Ich weiß nicht, wieso der Name dort falschrum ist, aber vlt wird sie deswegen vom Linker gar nicht wahrgenommen.

      Falls das nichts bringt, könntest du in der Tat auch noch in "/usr/lib/x86_64-linux-gnu" die .a-Datei vom neueren System kopieren. Die Gefahr von Fehlern ist hier eher gering, da statische Libs (.a-Endung) ja nur beim Kompilieren verwendet werden. Es sollte also nicht zu einem unbenutzbarem System führen.