Seite 1 von 2
Linker Config Datei
Verfasst: 26.07.2009 16:06
von cxAlex
In den Compiler - Optionen gibt es die Möglichkeit eine Linker Config Datei anzugeben. Haben wohl noch nicht so viele gemacht. Drum hab ich hier mal eine erstellt die ich recht gerne benutze:
Code: Alles auswählen
/LARGEADDRESSAWARE /RELEASE /OPT:REF /OPT:NOWIN98 /DEBUG:NO
Erklärung:
/LARGEADDRESSAWARE: Sorgt dafür dass das Programm unter 32 Bit bei aktivierten /pae - Switch des Os > 2GB ansprechen kann.
/RELEASE: Sorgt dafür das die Image-Checksumme korrekt in den Header geschrieben wird
/OPT:REF: Der Linker führt einen zusätzlichen Durchlauf zwecks Entfernung unnötiger Segmente durch
/OPT:NOWIN98: Ändert die Page-Größe auf 512 Bytes statt 4Kb.
/DEBUG:NO: Schaltet jegliches Debugging seitens des OS ab (Auch wenn der OS - Switch /nodebug nicht gesetzt ist)
Gruß, Alex
Verfasst: 27.07.2009 13:09
von Kurzer
Danke für die Info Alex. Ich werde das bei Zeiten mal ausprobieren.
Klingt erstmal so, als würde man damit kleinere Exen erzeugen können (= Müll wird entfernt, kleinere Page-Größe), was mir sehr entgegen kommt.
Wo hast Du die Info zu dem linker her?
Ich habe gerade in der Mittagspause mal ein bißchen gegoogled. So ganz peil ich die Hintergründe von PB noch nicht ganz, aber es scheint ja so zu sein, daß PB einen Linker von "Pelles C" benutzt? Stimmt das? Würde mich nicht wundern, denn der nachgeschaltete Assembler ist ja auch ein "Drittprodukt".
Nicht, daß ich da was gegen hätte, aber diese Zusammenhänge (so es denn welche gibt) könnten ruhig mal ein bißchen in der Hilfedatei breitgetreten werden.
Vielleicht schnall ich's auch einfach nur nicht, weil ich niemals C programmiert habe und daher nicht mit linken und compilieren in Berührung gekommen bin.
Wenn man mit diesem Wissen (siehe Deine Linkerdatei) aber postiven Einfluß auf die zu erzeugende Exe nehmen kann, dann kann man das ruhig in der HIlfedatei mit aufführen, finde ich.
Irgendwie hab ich das Gefühl, man kann eine ganze Menge mehr machen mit dem Zeug, mit dem PB 'intern' arbeitet. Man muß nur wissen wie.
Verfasst: 27.07.2009 14:38
von ZeHa
Ich kompiliere inzwischen auch "von Hand", damit ich bspw. mehrere Versionen gleichzeitig kompilieren kann (z.B. Debug- und Release-Version), dafuer habe ich mir auch ein kleines Build-Script geschrieben (in Form einer .bat-Datei), welches ich mit Parametern aufrufen kann. Bei Gelegenheit bzw. bei Interesse kann ich das hier auch mal posten, auf lange Sicht gesehen ist das meiner Meinung nach nuetzlicher als immer nur in der IDE zu kompilieren.
Verfasst: 27.07.2009 14:51
von Kurzer
ZeHa hat geschrieben:...Bei Gelegenheit bzw. bei Interesse kann ich das hier auch mal posten, auf lange Sicht gesehen ist das meiner Meinung nach nuetzlicher als immer nur in der IDE zu kompilieren.
Zeha, ich bin voll dafür

Verfasst: 27.07.2009 14:57
von ZeHa
Jo mach ich sobald ich zuhause bin

dann editiere ich diesen Post hier...
@ Kurzers Posting unterhalb dieses Postings: Ja, die letzten beiden Tage war ich kaum zuhause

aber ich hoff dass ich heute abend mal dazu komm
EDIT:
Also hier dann mal ein simples Batch-File... ich empfehle die Verwendung von SciTE, mit dem sehen Batch-Files (mit Default-Einstellung) immer so unglaublich geil aus...
Code: Alles auswählen
@echo off
if _%1==_full goto FULLVERSION
if _%1==_demo goto DEMOVERSION
goto ALL
:FULLVERSION
set FULL=1
set EXENAME=theprogram-full.exe
goto BUILD
:DEMOVERSION
set FULL=0
set EXENAME=theprogram-demo.exe
goto BUILD
:ALL
call build full
call build demo
goto END
:BUILD
set EXEDIR=bin
set ICON=theprogram.ico
set MAIN=src/main.pb
if not exist %EXEDIR% md %EXEDIR%
pbcompiler %MAIN% /EXE %EXEDIR%/%EXENAME% /ICON %ICON% /DYNAMICCPU /XP /CONSTANT FULL=%FULL% /CONSTANT
:END
echo.
Das File kann nun von der Console aus geöffnet werden mit den Parametern "full" oder "demo", oder "all", was gleichzeitig auch der Default-Wert ist, sofern man ohne Parameter startet oder die .bat durch Doppelklick startet.
EDIT 2: Das Skript setzt natürlich voraus, daß sich das Verzeichnis, in dem die pbcompiler.exe liegt, im PATH befindet!
Verfasst: 27.07.2009 23:26
von Kurzer
Jo mach ich sobald ich zuhause bin dann editiere ich diesen Post hier...
Na, ZeHa ist heute Abend wohl doch noch inner Pinte hängengeblieben - hihi

Verfasst: 28.07.2009 17:44
von PMV
Ich hab mir Pelles C mal runter geladen, um an die Doku zu kommen ...
das Kommandozeilen Programm unterstützt einige Parameter. Und das, was
cxAlex da anzeigt sind vorallem Defaulteinstellungen, sofern PB also nix
gegenteiliges setzt, greifen die so wie so. Die meisten Parameter sagen mir
aber nix und äh ... vermutlich braucht die auch keiner von uns.
MFG PMV
Verfasst: 29.07.2009 02:38
von Thorium
Ich hab mal nen "richtiges" DOS-Programm als DOS-Stub in eine meiner .exen Linken lassen. Das war ein Installer für ein DOS-Spiel. Wollte mal ausprobieren ob das funktioniert, dass ich eine DOS-Version und eine Windows-Version des Installers in einer .exe hab. Und es funktioniert. ^^
Verfasst: 29.07.2009 08:38
von Kaeru Gaman
Thorium hat geschrieben:Ich hab mal nen "richtiges" DOS-Programm als DOS-Stub in eine meiner .exen Linken lassen. Das war ein Installer für ein DOS-Spiel. Wollte mal ausprobieren ob das funktioniert, dass ich eine DOS-Version und eine Windows-Version des Installers in einer .exe hab. Und es funktioniert. ^^

kann man das irgendwo detailliert nachlesen?
würde das bedeuten, dass man alte DOS-Games in nen Starter linken kann und dann laufen sie wieder?
Verfasst: 29.07.2009 10:57
von Thorium
Kaeru Gaman hat geschrieben:Thorium hat geschrieben:Ich hab mal nen "richtiges" DOS-Programm als DOS-Stub in eine meiner .exen Linken lassen. Das war ein Installer für ein DOS-Spiel. Wollte mal ausprobieren ob das funktioniert, dass ich eine DOS-Version und eine Windows-Version des Installers in einer .exe hab. Und es funktioniert. ^^

kann man das irgendwo detailliert nachlesen?
würde das bedeuten, dass man alte DOS-Games in nen Starter linken kann und dann laufen sie wieder?
Ne.
Der DOS-Stub ist ein winziges DOS-Programm am Anfang jeder .exe. Er ist dazu da anzuzeigen dass das Programm nicht läuft, wenn es unter DOS aufgerufen wird. Dann erscheint der Satz "This program cannot be run in DOS mode." Dieser Satz wird vom DOS-Stub ausgegeben. Man kann dem Linker allerdings sagen das man nicht den Standart-Stub einlinken möchte sondern ein selbstdefiniertes DOS-Programm. Dieses wird dann gestartet, falls die .exe unter DOS ausgeführt wird.