Aktuelle Zeit: 26.05.2018 13:36

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 24.04.2016 00:20 
Offline

Registriert: 23.04.2016 23:56
Durch Angabe der Option "-c" mit dem pbcompiler wird eine Assembler-Datei (.asm) erstellt. Ich habe nun erfolglos versucht, ausgehend von dieser Datei in OSX (64bit) eine ausführbare Datei mit dem Assembler (yasm) und Linker (ld) von der Kommandozeile zu erstellen. Zwar kann lässt sich die Assembler-Datei mit yasm fehlerlos Kompilieren, den erhaltenen Objektcode konnte ich aber bisher mit ld nicht linken. Ich vermute, man müsste diesen mit den richtigen Libraries linken, bin aber aus den vorhandenen Dateien im Ordner "purelibraries" nicht schlau geworden. Bin um jeden Hinweis mit einfachem Beispiel zur Benutzung von "pbcompiler -c", "yasm" und "ld" froh, danke im Voraus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 24.04.2016 13:33 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Ich weiss nicht genau wie es unter MAC OS ist, aber unter Windows und Linux beinhalten die Dateien im purelibraries Ordner die eigentliche statische Bibliothek. In der Datei stehen, neben den benoetigten Libs, die Information welche Funktionen es in der Lib gibt, die Hilfedatei usw, danach kommt die statische Lib (vor laengerer Zeit mit Xor verschluesselt).

Der Kompiler von Purebasic entpackt die statische Lib beim kompilieren in ein temporaeres Verzeichnis und von dort aus werden sie gelinkt. Wenn du also in diesen Prozess eingreifst, kannst du sie dir heraus kopieren, bevor Purebasic sie wieder loescht. Unter Windows wuerde man z.B. einfach die Fasm.exe durch ein Programm ersetzen, das nur eine MessageBox anzeigt und somit das kompilieren pausiert. Damit hast du die Moeglichkeit die Libs zu kopieren.

Wenn du allerdings nur etwas am ASM Code aendern moechtest, gibt es einen Schalter (reasm) fuer den Purebasic Kompiler, der den Code wieder kompilieren kann.

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 24.04.2016 14:05 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
edel hat geschrieben:
Wenn du allerdings nur etwas am ASM Code aendern moechtest, gibt es einen Schalter (reasm) fuer den Purebasic Kompiler, der den Code wieder kompilieren kann.
Den gibt es nur bei der Windows-Version.

_________________
Bild

PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!

Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 24.04.2016 14:11 
Offline

Registriert: 23.04.2016 23:56
Danke, ich hatte mir inzwischen mit der Aktivitätsanzeige auf den pbcompiler alle Lese-/Schreibzugriffe für den gesamten Vorgang anzeigen lassen, und diese bestätigen deine Anmerkungen.

Danke auch für den Tipp, wie ich den Vorgang allenfalls pausieren kann. Ich probiere sicher auch noch zusätzlich, ob sich die statischen Bibliotheken alle sonstwie entpacken lassen (im compiler Ordner sehe ich Programme wie pblibrarymaker und pbsoimporter, diese tönen erfolgsversprechend).

Betreffend den reasm Schalter hatte ich gemäss Programmhilfe verstanden, dass es diesen nur für die Windows Version gibt (ist unter "Windows spezifische Kommandozeilen-Parameter" aufgelistet); probieren kann ich es aber trotzdem.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 24.04.2016 19:42 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Du kannst sie auch direkt entpacken :

(64 bit)

Code:
Procedure UnPackPBLib(*buffer.long,*size.long)
   Protected magic.l = $C3500
   Protected ende.l
   Protected start.l   
 
   *buffer  + PeekL(*buffer+4) + 12   
   size     = PeekL(*buffer+4)   
   *buffer  + 12
    start.l = *buffer      
    ende.l  = *buffer + size
    
   While *buffer <= ende
      *buffer\l =~ *buffer\l
      *buffer\l - magic
      magic + size      
      *buffer + 4
   Wend 
   
   *size\l = size
   ProcedureReturn start
EndProcedure

#PB_LIB = "purelibraries\gadget"

file = ReadFile(-1,"purelibraries\" + #PB_LIB)
 
If file
   
   size    = Lof(file)    
   buffer = AllocateMemory(size)
   If ReadData(file,buffer,size)
      CloseFile(file)
      lib = UnPackPBLib(buffer,@size)
      file = CreateFile(-1,"desktop/" + #PB_LIB + ".a")
      If file 
         WriteData(file,lib,size)
         CloseFile(file)
      EndIf 
      FreeMemory(buffer)
   EndIf 
   
EndIf

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 24.04.2016 23:24 
Offline

Registriert: 23.04.2016 23:56
Herzlichen Dank!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 25.04.2016 09:46 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Bleibt die Frage, ob man das laut Lizenz darf. Vielleicht vorher nochmal durchlesen?

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Creality 3D CR-10 Review und erste Druckergebnisse
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"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."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 25.04.2016 12:55 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Dafuer muesste man erst einmal wissen wo man lesen sollte 8)
Hast du ein Link?

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kompilieren und Linken über Kommandozeile
BeitragVerfasst: 25.04.2016 13:09 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
In der Hilfe gibt es den Punkt "Rechtliches". Da steht aber nicht wirklich viel. Ich vermute eine richtige Lizenz fehlt hier schlicht. Keine Ahnung, wie das dann einzuordnen ist.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Creality 3D CR-10 Review und erste Druckergebnisse
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"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."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye